我需要使用 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 整除。
更新
正如评论指出的,更简单的方法是使用 -vf "scale=640:-2"
。
感谢 @BradWerth 提供的优雅解决方案
关于ffmpeg - 使用 FFmpeg 保持宽高比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8218363/