解决 FFMPEG Mod2 限制

解决 FFMPEG Mod2 限制

我想使用 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

这不是绝对的限制。它适用于输出像素格式具有子采样色度平面的情况,例如yuv420pyuv422p..等。

如果你的后续进程可以处理 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"

相关内容