HarmonyOS鸿蒙NEXT中Flutter转换文件格式示例代码

HarmonyOS鸿蒙NEXT中Flutter转换文件格式示例代码

介绍

本示例通过Flutter调用原生ffmpeg库进行文件格式转换,将录制的.mp4格式文件转换为.aac格式。

Flutter转换文件格式源码链接

效果预览

图片名称

使用说明

进入应用,打开.mp4文件并播放。点击按钮将.mp4文件转换为.aac音频文件并保存.aac音频文件到手机目录。切换Tab打开.aac音频文件显示并播放。点击删除按钮可以将.aac音频文件从app页面列表删除。

实现思路

flutter通过channel的方式调用FlutterFfmpegPlugin插件方法,该方法通过ffmpeg命令将.mp4格式文件转成.aac音频格式。

onMethodCall(call: MethodCall, result: MethodResult): void {
  switch (call.method) {
    case 'executeFFmpegWithPath': {
      let sourcePath: string = call.argument("sourcePath");
      let destPath: string = call.argument("destPath");
      let output = destPath;
      let callBack: ICallBack = {
        callBackResult(code: number) {
          if (code === 0) {
            let re: HashMap<String, String> = new HashMap<String, String>();
            re.set('rc', '0')
            re.set('msg', 'covert type success')
            re.set('data', output)
            result.success(re)
          } else {
            result.error('-1', 'cmd failed', 'ffmpeg cmd failed')
          }
        }
      }
      if(destPath.endsWith(".aac")){
        MP4Parser.ffmpegCmd(` ffmpeg -y -i ${sourcePath}  -vn -c:a aac -strict experimental -b:a 128k ${output}`, callBack);
      }
      break;
    }
  }
}

更多关于HarmonyOS鸿蒙NEXT中Flutter转换文件格式示例代码的实战教程也可以访问 https://www.itying.com/category-92-b0.html

2 回复

在HarmonyOS NEXT中,Flutter可通过插件或FFI实现文件格式转换。以下是使用FFI调用原生能力的示例代码:

import 'dart:ffi';
import 'package:ffi/ffi.dart';

final lib = DynamicLibrary.open('libfileconvert.so');

typedef ConvertFileFunc = Pointer<Utf8> Function(
  Pointer<Utf8> srcPath,
  Pointer<Utf8> dstFormat
);
final convertFile = lib.lookupFunction<ConvertFileFunc, ConvertFileFunc>('convertFile');

String convertFileFormat(String srcPath, String dstFormat) {
  final result = convertFile(
    srcPath.toNativeUtf8(),
    dstFormat.toNativeUtf8()
  );
  return result.toDartString();
}

需配套开发native层的C++动态库实现实际转换逻辑。注意FFI调用需处理内存管理。

更多关于HarmonyOS鸿蒙NEXT中Flutter转换文件格式示例代码的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


这是一个很好的HarmonyOS Next中使用Flutter进行音视频格式转换的示例。核心是通过FFmpeg实现格式转换,代码中展示了关键实现:

  1. 通过MethodChannel调用原生FFmpeg插件
  2. 使用FFmpeg命令将MP4转为AAC格式:
ffmpeg -y -i ${sourcePath} -vn -c:a aac -strict experimental -b:a 128k ${output}
  1. 回调处理转换结果,成功返回0,失败返回-1

这个方案在HarmonyOS Next上同样适用,需要注意:

  • 确保FFmpeg库已正确集成到项目中
  • 文件路径需要适配HarmonyOS的文件系统
  • 权限申请需要符合HarmonyOS的权限管理机制

代码结构清晰,通过HashMap返回转换结果的做法值得借鉴。

回到顶部