You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Android中使用FFmpeg实现视频稳定时找不到vidstabdetect滤镜怎么办

问题根因

vidstabdetect、vidstabtransform不属于FFmpeg内置滤镜,依赖第三方GPL协议库libvidstab,你目前使用的FFmpeg-Android-Java、普通版MobileFFmpeg、默认版FFmpegKit均未开启libvidstab的编译链接,因此会报错找不到对应滤镜。

解决方法

方案一:使用预编译的带libvidstab支持的FFmpeg包

直接选用FFmpegKit的full-gpl版本即可,该版本默认编译了libvidstab依赖,原生支持vidstab系列滤镜。

注意:libvidstab属于GPL协议组件,使用full-gpl版本的FFmpegKit后,你的项目若对外分发需要遵循GPL协议要求开源相关代码。

方案二:自行编译FFmpeg安卓包

如果需要自定义编译配置,按以下步骤操作:

  • 先交叉编译对应ABI架构的libvidstab静态库
  • 编译FFmpeg时添加编译参数--enable-gpl --enable-libvidstab,链接提前编译好的libvidstab静态库即可

使用步骤

集成成功后先执行ffmpeg -filters命令,若输出中存在vidstabdetect、vidstabtransform条目则说明组件集成正常,之后按两步执行稳像操作:

  1. 分析视频抖动参数,生成变换配置文件
ffmpeg -i 输入视频路径 -vf vidstabdetect=shakiness=5:accuracy=15 -f null -

执行后会在当前目录生成transforms.trf参数文件,其中shakiness参数取值范围1-10,原视频抖动越大取值越高,可根据实际效果调整。

  1. 应用变换参数生成稳像视频
ffmpeg -i 输入视频路径 -vf vidstabtransform=smoothing=30:input="transforms.trf" 输出视频路径

其中smoothing参数为平滑窗口大小,取值越大稳像效果越平稳,但画面裁切幅度也会越高,可根据需求调整。

其他说明

deshake是FFmpeg内置的轻量稳像滤镜,效果弱于vidstab是正常情况。vidstab的处理耗时远高于deshake,建议在安卓端处理时放在子线程执行,避免阻塞UI。

内容的提问来源于stack exchange,提问作者Not_Bluffing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 05:45:02