FFmpeg - 如何用 png 替换视频的图像而不修改音频?

FFmpeg - 如何用 png 替换视频的图像而不修改音频?

我正在尝试尽快修改几个视频。目标是将视频的原始图像替换为黑色或白色图像,简而言之,就是一张没有任何内容的图像。

在互联网上搜索我发现了两行代码(均有效):

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"

所有视频文件都应按顺序处理。

相关内容