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转换文件格式需使用ArkUI适配方案。Flutter的Dart代码无法直接运行,需通过FFI调用Native能力或转为ArkTS组件。具体步骤:

  1. 用方舟编译器转换Dart逻辑为ArkTS;
  2. 对Platform层代码使用Native API重写;
  3. 通过NAPI封装系统能力供ArkTS调用。

UI部分需重构为ArkUI的声明式语法,布局文件需转为ets格式。目前没有自动化转换工具,需手动迁移。

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


在HarmonyOS Next中通过Flutter调用FFmpeg进行文件格式转换的实现方案是可行的,但需要注意以下几点:

  1. 平台适配性:
  • HarmonyOS Next的FFmpeg集成方式可能与Android不同,需要确认NDK兼容性
  • 建议使用HarmonyOS官方提供的媒体处理能力替代部分FFmpeg功能
  1. 代码优化建议:
  • 命令字符串建议使用模板字符串优化可读性
  • 错误处理可以更细化,区分不同错误码
  • 考虑添加进度回调支持
  1. 性能考虑:
  • 大文件转换建议使用Worker线程
  • 可以添加转换进度显示功能
  • 考虑实现转换队列管理
  1. 存储权限:
  • 需要确保应用有正确的文件读写权限
  • 输出路径建议使用HarmonyOS规范的应用目录

这个实现方案展示了Flutter与原生能力结合的典型方式,在HarmonyOS Next上同样适用,但建议针对HarmonyOS特性进行优化。

回到顶部