
FlutterFFmpeg 快速上手10 分钟在移动端集成 FFmpeg8 种包变体与 LTS 版本一次讲清【免费下载链接】flutter-ffmpegFFmpeg plugin for Flutter. Not maintained anymore. Superseded by FFmpegKit.项目地址: https://gitcode.com/gh_mirrors/fl/flutter-ffmpegFlutterFFmpeg包名flutter_ffmpeg是 Flutter 框架的 FFmpeg 插件同时支持 iOS 与 Android让你无需任何原生开发就能在 App 内直接调用 FFmpeg 和 FFprobe完成视频转码、音频压缩、字幕烧录等移动端音视频处理。本文带你在 10 分钟内完成安装并一次讲透 8 种包变体与 LTS 版本的选型差异。一、FlutterFFmpeg 是什么Flutter 生态里的移动端 FFmpeg 方案插件基于 MobileFFmpeg 构建内置了完整的 FFmpeg 与 FFprobe 能力核心特性包括双端支持AndroidAPI 24/LTS 16与 iOSSDK 11.0/LTS 9.3多版本内核支持 FFmpeg v4.1 / v4.2 / v4.3 等多个版本多架构覆盖Android 覆盖 arm64-v8a、arm-v7a 等iOS 覆盖 arm64、armv7 等⚡并发执行可同时运行多个 FFmpeg 任务互不阻塞25 外部库内置 lame、opus、libvpx、x264 等常用编解码库插件的核心 Dart 接口位于 lib/flutter_ffmpeg.dartAndroid 与 iOS 的原生实现分别在android/src/main/java/com/arthenica/flutter/ffmpeg/FlutterFFmpegPlugin.java和ios/Classes/FlutterFFmpegPlugin.m方便需要深入定制的同学阅读源码。二、3 步安装FlutterFFmpeg 集成到 Flutter 项目第 1 步添加依赖在pubspec.yaml中加入依赖即可默认安装基于 https 的包变体dependencies: flutter_ffmpeg: ^0.4.2第 2 步配置 Android 包变体编辑android/build.gradle用ext.flutterFFmpegPackage指定你要的包ext { flutterFFmpegPackage https }第 3 步配置 iOS 包变体在ios/Podfile的target Runner do之前加入 README 中提供的flutter_install_plugin_pods方法并在其中把 pod 写成flutter_ffmpeg/包名的形式即可切换到任意变体。 详细步骤与完整的 Podfile 代码片段见 README.md 的 2.1 Packages 章节。三、8 种 flutter_ffmpeg 包变体怎么选FFmpeg 的内置编码器有限想编码 MP3、H.264、VP8/VP9 等格式需要对应的外部库如 lame、x264、libvpx。FlutterFFmpeg 按包含哪些库把插件拆成了8 个包变体按需选择既能满足功能又能控制包体积包名定位关键外部库min最小包仅内置编码器无min-gpl最小包 GPL 编码器vid.stab、x264、x265、xvidcorehttps默认包支持网络流RTMP/HLS 等gmp、gnutlshttps-gplhttps GPL 编码器gmp、gnutls、x264 等 6 项audio音频专精转码 MP3/Opus 等lame、opus、libvorbis、speex 等video视频专精编码 WebM/WebP 等libvpx、libaom、libwebp、libass 等full全能包除 GPL 外全包含25 项外部库full-gpl完整版含全部 GPL 库29 项外部库选型口诀只做视频缩放/格式转换 →min要做 MP3、Opus 等音频转码 →audio要编码 H.264/H.265 视频 → 选任意带-gpl的包处理网络直播流 →https或https-gpl不确定用什么 → 直接full功能最全四、Main Release 与 LTS 版本一张表看懂差异每个包名都有两个版本Main Release主力版和LTS Release长期支持版。两者源码相同只是构建参数不同。安装 LTS 只需把包名加上-lts后缀例如https-lts、full-lts。对比项Main ReleaseLTS ReleaseAndroid 最低 API Level2416Android 摄像头访问✅❌Android 架构arm-v7a-neon、arm64-v8a、x86、x86-64额外支持 arm-v7aXcode 最低版本10.17.3.1iOS 最低 SDK11.09.3iOS AVFoundation✅❌iOS 架构arm64、x86-64、Catalystarmv7、arm64、i386、x86-64结论需要兼容老机型Android 6 以下、iOS 9.x选 LTS 包追求新特性和摄像头能力选 Main 包。完整包名对照表见 README 的 2.1.5 Package Names 一节。五、必须掌握的常用 API执行、异步与日志监听FlutterFFmpeg 的 Dart 接口非常简洁日常开发 4 个方法就够用了final FlutterFFmpeg ffmpeg new FlutterFFmpeg(); // 同步执行 FFmpeg 命令 ffmpeg.execute(-i file1.mp4 -c:v mpeg4 file2.mp4) .then((rc) print(返回码: $rc)); // 异步执行返回 executionId可并发多任务 ffmpeg.executeAsync(ffmpegCommand, (execution) { print(任务 ${execution.executionId} 完成); }); // 随时取消cancelAll 或按 executionId 取消 ffmpeg.cancel();配套能力一览FFprobe 探测FlutterFFprobe可执行探测命令getMediaInformation()直接拿到时长、比特率、流信息等结构化数据日志回调enableLogCallback把 FFmpeg 输出实时打到控制台或 UI进度统计enableStatisticsCallback获取实时码率、速度、帧数轻松做进度条字体目录setFontDirectory()注册自定义字体Android 上烧录字幕必需管道PiperegisterNewFFmpegPipe()创建 FFmpeg 管道实现边推流边处理六、官方示例应用边看边学仓库自带一个功能完整的示例 App位于example/目录覆盖 8 大场景命令行执行、视频编码、HTTPS 网络流、音频转码、字幕烧录、视频防抖、管道操作、并发执行对应源码见example/lib/下的 video_tab.dart、pipe_tab.dart 等文件。示例工程内置了几张高清测试图吉萨金字塔、罗马斗兽场、泰姬陵分别用于视频编码与 Pipe 管道的演示素材直接运行example项目就能看到插件在真机上的完整效果是学习 FFmpeg 命令最直观的途径。七、5 个常见构建报错避坑清单⚠️ 以下问题在官方 README Tips 章节有详细说明提前看一遍能省很多时间iOS 构建报 deployment target 错误—— 在ios/Podfile中声明platform :ios, 11.0Main 包或platform :ios, 9.3LTS 包Android 打包出现 UnsatisfiedLinkError—— 确保build.gradle中mavenCentral()定义在jcenter()之前Xcode 打包后 PNG 解码失败—— 在 Build Settings 中将 Compress PNG Files 与 Enable PNG slicing 均设为 NOAndroid 烧录字幕无效果但不报错—— Android 没有默认 fontconfig 配置需用setFontDirectory注册字体多个依赖重复打包 libc_shared.so 冲突—— 在build.gradle中按 README 添加pickFirst规则八、许可证与项目现状 FlutterFFmpeg 采用LGPL v3.0许可若选用带-gpl后缀的包变体则受GPL v3.0约束见 LICENSE 与 LICENSE.GPLv3 项目当前处于停止维护状态官方已建议新项目迁移到 FFmpegKit 方案存量项目可继续使用 版本更新记录见 CHANGELOG.md小结FlutterFFmpeg 让 Flutter 开发者以一行依赖 两行配置的成本把工业级 FFmpeg 能力带进移动端。记住三件事即可按需求选包变体音频选audio、视频编码选-gpl包、老设备用-lts后缀、iOS 记得声明部署目标。【免费下载链接】flutter-ffmpegFFmpeg plugin for Flutter. Not maintained anymore. Superseded by FFmpegKit.项目地址: https://gitcode.com/gh_mirrors/fl/flutter-ffmpeg创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考