如何在FFmpeg中使用多个滤镜?批量处理MP4时滤镜失效求助
解决FFmpeg双滤镜批量处理仅第一个生效的问题
问题根源
你的脚本错误地将eq色彩调整滤镜写在了-map参数里,-map仅用于指定输出流,不能承载滤镜命令,导致第二个滤镜完全没被执行。
正确命令写法
写法1:串联视频滤镜(推荐)
把视频加速滤镜setpts和色彩调整滤镜eq合并为同一条视频滤镜链,用逗号分隔(逗号代表对同一视频流依次执行滤镜):
for %%a in ("*.mp4") do ffmpeg -i "%%a" -filter_complex "[0:v]setpts=0.87*PTS,eq=brightness=0.06:saturation=2[v];[0:a]atempo=1.15[a]" -map "[v]" -map "[a]" "output\%%~na.mp4"
写法2:分步处理视频流
如果需要更清晰的流程拆分,可以分两步定义视频流:
for %%a in ("*.mp4") do ffmpeg -i "%%a" -filter_complex "[0:v]setpts=0.87*PTS[v1];[v1]eq=brightness=0.06:saturation=2[v];[0:a]atempo=1.15[a]" -map "[v]" -map "[a]" "output\%%~na.mp4"
核心规则
- 同一流的多个滤镜用逗号分隔:比如视频流先加速再调色彩
- 不同流的滤镜用分号分隔:比如视频滤镜和音频滤镜的分界
- 提前创建
output文件夹,否则FFmpeg会因无法写入文件报错
内容的提问来源于stack exchange,提问作者heiko
相关产品推荐
相关产品推荐

