我想使用 ffmpeg 批量处理文件夹中不同大小、编码等的视频文件。
我们使用以下脚本。问题是,我们正在创建一个视频,后续过程将从中提取 3p 宽的切片。因此,理想的宽度应为 3 模。但 264 仅需要 2 模。您可以看到我们正在使用 6 模。但在一些较小的视频文件中,这会引入不良伪影。
详细的问题是:有没有办法实现 mod 3,也许通过利用变形?
ffmpeg -i "$f" \ -vf 'scale=-6:300' \ -c:v h264 -preset "medium" -r 24 \ -map 0:a \ -map 0:v \ -map 0:s \ -map_metadata 0 \ -c:a aac -ac 1 \ -c:s copy \ -y "$partname"
答案1
这不是绝对的限制。它适用于输出像素格式具有子采样色度平面的情况,例如yuv420p
,yuv422p
..等。
如果你的后续进程可以处理 yuv444p,那么你可以简单地运行
ffmpeg -i "$f" -vf 'scale=-3:300,format=yuv444p' \
-r 24 -c:v libx264 -preset "medium" -map 0:a -map 0:v -map 0:s -map_metadata 0 \
-c:a aac -ac 1 -c:s copy -y "$partname"
但如果它只能处理yuv420p
,那么您可以用黑色填充比例输出并让您的应用程序丢弃最后 1 像素宽的切片。
ffmpeg -i "$f" -vf 'scale=-3:300,pad=iw+1:ih' \
-r 24 -c:v libx264 -preset "medium" -map 0:a -map 0:v -map 0:s -map_metadata 0 \
-c:a aac -ac 1 -c:s copy -y "$partname"