如何配置flutter_ffmpeg启用lib*264解决视频压缩执行报错
Flutter_ffmpeg启用libx264编码解决视频压缩报错方案
首先修正两个直接触发报错的基础问题:
unrecognised option CRF报错由参数格式错误导致:CRF是FFmpeg的编码参数,必须加-前缀,正确写法为-crf。另外-crf 0是无损编码模式,输出文件体积极大,完全无法实现压缩效果,常规压缩场景建议取值23-28,数值越大压缩率越高、画质损失越明显。unknown encoder libx264报错的核心原因是--enable-libx264是FFmpeg编译阶段的配置参数,无法在执行FFmpeg命令时追加生效。flutter_ffmpeg提供了预编译好的分发包,直接选用内置libx264支持的版本即可,不需要手动修改编译配置。
具体配置步骤
1. 替换依赖为带GPL协议的flutter_ffmpeg包
libx264是GPL许可的开源编码器,默认的min、https等版本包未内置该编码器,需要将pubspec.yaml中的依赖替换为带-gpl后缀的版本:
dependencies: # 替换原有默认的flutter_ffmpeg依赖,选用full-gpl版本即可,该版本内置几乎所有常见编码,包含libx264 flutter_ffmpeg_full_gpl: ^0.4.2 # 版本号和你原项目使用的flutter_ffmpeg主版本保持一致即可
注意:使用带GPL后缀的包意味着你的项目需要遵守GPLv3许可协议的相关要求。
2. 平台端配置校验
- Android端:不需要额外添加编译参数,full-gpl包已经默认开启
--enable-libx264编译配置,只需要确认app/build.gradle中没有手动过滤x264相关的so库即可,修改依赖后执行flutter clean再重新编译。 - iOS端:修改依赖后进入ios目录执行
pod install --repo-update,确认Podfile中没有手动指定引入非GPL版本的flutter_ffmpeg子模块,安装完成后重新编译即可。
3. 修正后的压缩命令
依赖配置完成后,使用格式正确的命令执行压缩即可:
// 示例:crf取26,preset取medium,兼顾压缩速度、文件体积和画质 FFmpeg.execute('-i input.mp4 -c:v libx264 -crf 26 -preset medium output.mp4');
参数补充说明:
-preset为编码速度预设,可选值从快到慢为ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow,速度越慢同等画质下压缩率越高,可按需选择。- 如果需要同时压缩音频,可以追加
-c:a aac -b:a 128k参数,指定音频编码为aac、码率128k。
内容的提问来源于stack exchange,提问作者kvvisony
相关产品推荐
相关产品推荐

