我正在尝试尽快修改几个视频。目标是将视频的原始图像替换为黑色或白色图像,简而言之,就是一张没有任何内容的图像。
在互联网上搜索我发现了两行代码(均有效):
ffmpeg -loop 1 -i x.png -i "y.mp4" -map 0 -map 1:a -c:v libx264 -crf 22 -preset slow -c:a copy -shortest out.mp4
ffmpeg -i x.png -i "y.mp4" -filter_complex "[1][0]scale2ref[i][v];[v][i]overlay" -c:a copy out.mp4
但是该用哪一个呢?或者说,什么是最快的方法,不会丢失音频?只要最小分辨率为 426x240,视频质量损失就不是问题。
答案1
使用第二个命令调整图像大小后,使用第一个命令的修改版本。
ffmpeg -loop 1 -i resized.png -i "y.mp4" -map 0 -map 1:a -c:v libx264 -crf 22 -preset veryfast -c:a copy -shortest out.mp4
调整图像大小:
ffmpeg -i x.png -vf scale=426:240,setsar=1 resized.png
答案2
从 Gyan 的回答开始:将所有视频文件和“resized.png”图像复制到同一目录,然后从该目录内的命令行运行“FOR循环”。
UNIX/LINUX 系统:
for f in *.mp4; do ffmpeg -loop 1 -i resized.png -i "$f" -map 0 -map 1:a -c:v libx264 -crf 22 -preset veryfast -c:a copy -shortest "${f%.mp4}_OUT.mp4"; done
我不使用 Windows,但它应该是这样的:
for %f in (*.mp4) DO ffmpeg -loop 1 -i resized.png -i "%f" -map 0 -map 1:a -c:v libx264 -crf 22 -preset veryfast -c:a copy -shortest "%~nf_OUT.mp4"
所有视频文件都应按顺序处理。