如何编写bat脚本调用FFmpeg批量实现视频右移同色背景填充
单步FFmpeg批量处理方案
不需要拆分多步脚本、不需要导出中间帧、不需要依赖ImageMagick取色,单条FFmpeg命令即可完成全部需求,处理速度比原方案快1倍以上,且能彻底解决填充色不匹配的问题。
核心逻辑
- 3840分辨率下15%右移对应固定偏移量576像素,无需提前裁剪视频
- 直接从原视频左上角纯背景区域取1个像素,拉伸为全幅画布作为背景层,从根源避免取色偏差
- 所有操作在单次编解码流程内完成,不生成任何中间文件
可用批处理代码
提前在脚本同目录创建final文件夹,将以下代码存为.bat文件,和待处理MP4文件、ffmpeg目录放在同一层级即可直接运行:
@echo off set FFMPEG=.\ffmpeg\bin\ffmpeg.exe if not exist final md final for %%f in (*.mp4) do ( %FFMPEG% -threads 4 -i "%%f" ^ -filter_complex "[0:v]split[bg][src];[bg]crop=1:1:0:0,scale=3840:2160:flags=neighbor[bg_layer];[bg_layer][src]overlay=x=576:y=0[outv]" ^ -map "[outv]" -map 0:a? -c:a copy -c:v libx264 -crf 18 -preset medium -movflags +faststart "final\%%f" )
原方案颜色不匹配的原因
- 第一步裁剪操作已经切掉了原视频最左侧的纯背景区域,后续取色拿到的是展示内容边缘的像素,并非真实背景色
- 导出帧后用ImageMagick取色容易受视频压缩噪点、色度采样偏差影响,取到的颜色值本身存在误差
参数调整说明
- 若需要修改画面偏移比例,直接调整
overlay=x=576的数值即可,576对应15%偏移,如需偏移20%改为768即可 -crf 18为接近无损的画质参数,想要更小体积可适当调高数值,最高不超过28即可保证视觉无明显差异- 音频流直接复制原流不做转码,可大幅提升处理速度
内容的提问来源于stack exchange,提问作者Maiki
相关产品推荐
相关产品推荐

