我需要使用 FFmpeg 转换一堆视频文件。我运行一个 Bash 文件,可以很好地转换所有文件,但是如果转换的文件不是 16:9 格式,则会出现问题。
当我将屏幕尺寸固定为 -s 720x400 时,如果原始宽高比为 4:3,FFmpeg 将创建一个 16:9 输出文件,从而搞乱宽高比。
是否有一个设置允许将长宽比设置为主要参数,并调整大小(例如,仅固定 X 或 Y 尺寸)?
-vf "scale=640:-1"
工作得很好,直到你遇到错误
[libx264 @ 0x2f08120] height not divisible by 2 (640x853)
所以最通用的方法是使用过滤表达式:
scale=640:trunc(ow/a/2)*2
它获取输出宽度 (ow),将其除以纵横比 (a),再除以 2,截断小数点后的数字,然后乘以 2。它保证生成的高度可被 2 整除。
致谢ffmpeg 跟踪 http://ffmpeg.org/trac/ffmpeg/ticket/309
UPDATE
正如评论指出的,更简单的方法是使用-vf "scale=640:-2"
。
感谢 @BradWerth 提供的优雅解决方案
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)