Flutter音频转码插件lat_hdr_transcoder_v2的使用

Flutter音频转码插件lat_hdr_transcoder_v2的使用

pub package

本插件的目的非常明确和简单:

它检查视频文件是否为HDR格式,并将HDR视频转换为SDR格式。转换利用了原生平台(Android、iOS)的功能(不使用FFMPEG)。

请务必检查支持的最低版本。

开始使用

pubspec.yaml文件中添加依赖:

dependencies:
  lat_hdr_transcoder_v2: ^1.0.0+5

Android配置

对于Android,支持从API级别29开始的转换功能。

AndroidManifest.xml文件中添加以下内容:

<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${applicationId}.provider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths" />
</provider>

创建res/xml/file_paths.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path
        name="external"
        path="." />
    <external-files-path
        name="external_files"
        path="." />
    <cache-path
        name="cache"
        path="." />
    <external-cache-path
        name="external_cache"
        path="." />
    <files-path
        name="files"
        path="." />
</paths>

iOS配置

对于iOS,支持从版本14开始的HDR检测功能。

使用方法

检查HDR格式

bool isHdr = await LatHdrTranscoderV2().isHdr(String path);

转换HDR到SDR

// 创建一个监听器来获取转换进度
Stream<double> stream = LatHdrTranscoderV2().onProgress();
stream.listen((value) {
  print(value); // 进度值从0.0到1.0
});

// 进行HDR到SDR的转换
String? sdrVideoPath = await LatHdrTranscoderV2().transcoding(String path);

清除缓存

bool success = await LatHdrTranscoderV2().clearCache();

完整示例代码

以下是一个完整的示例代码,展示了如何使用lat_hdr_transcoder_v2插件进行HDR视频转换。

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:lat_hdr_transcoder_v2/lat_hdr_transcoder_v2.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';
  final _latHdrTranscoderV2Plugin = LatHdrTranscoderV2();

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 平台消息异步初始化
  Future<void> initPlatformState() async {
    // 平台消息可能会失败,因此我们使用try/catch处理PlatformException。
    // 我们还处理消息可能返回null的情况。
    try {
      await _latHdrTranscoderV2Plugin.clearCache(); // 清除缓存
    } on PlatformException {}

    // 如果在异步平台消息还在飞行时小部件被树移除,我们应该丢弃回复而不是调用setState来更新我们的不存在的外观。
    if (!mounted) return;

    setState(() {
      _platformVersion = 'platformVersion';
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Text('Running on: $_platformVersion\n'),
        ),
      ),
    );
  }
}

更多关于Flutter音频转码插件lat_hdr_transcoder_v2的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter音频转码插件lat_hdr_transcoder_v2的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


lat_hdr_transcoder_v2 是一个用于 Flutter 的音频转码插件,它允许你在 Flutter 应用中轻松地进行音频文件的转码操作。以下是如何使用 lat_hdr_transcoder_v2 插件的详细步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 lat_hdr_transcoder_v2 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  lat_hdr_transcoder_v2: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中导入 lat_hdr_transcoder_v2 插件:

import 'package:lat_hdr_transcoder_v2/lat_hdr_transcoder_v2.dart';

3. 初始化插件

在使用插件之前,通常需要先初始化它:

LatHdrTranscoderV2.initialize();

4. 转码音频文件

使用 LatHdrTranscoderV2 提供的 transcode 方法来转码音频文件。你需要指定输入文件路径、输出文件路径和目标格式。

void transcodeAudio() async {
  String inputFilePath = "/path/to/input/file.mp3";
  String outputFilePath = "/path/to/output/file.wav";
  String targetFormat = "wav";  // 目标格式

  try {
    await LatHdrTranscoderV2.transcode(
      inputFilePath: inputFilePath,
      outputFilePath: outputFilePath,
      targetFormat: targetFormat,
    );
    print("转码成功: $outputFilePath");
  } catch (e) {
    print("转码失败: $e");
  }
}

5. 处理转码结果

转码完成后,你可以通过 outputFilePath 访问转码后的音频文件。如果转码失败,transcode 方法会抛出异常,你可以在 catch 块中处理错误。

6. 其他功能

lat_hdr_transcoder_v2 插件可能还提供其他功能,例如获取音频文件的元数据、设置转码参数等。你可以查看插件的文档来了解更多详细信息。

7. 示例代码

以下是一个完整的示例代码,展示了如何使用 lat_hdr_transcoder_v2 插件进行音频转码:

import 'package:flutter/material.dart';
import 'package:lat_hdr_transcoder_v2/lat_hdr_transcoder_v2.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('音频转码示例'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: transcodeAudio,
            child: Text('转码音频'),
          ),
        ),
      ),
    );
  }

  void transcodeAudio() async {
    String inputFilePath = "/path/to/input/file.mp3";
    String outputFilePath = "/path/to/output/file.wav";
    String targetFormat = "wav";  // 目标格式

    try {
      await LatHdrTranscoderV2.transcode(
        inputFilePath: inputFilePath,
        outputFilePath: outputFilePath,
        targetFormat: targetFormat,
      );
      print("转码成功: $outputFilePath");
    } catch (e) {
      print("转码失败: $e");
    }
  }
}
回到顶部