ffmpeg - 使用 FFmpeg 保持宽高比

标签 ffmpeg video-processing aspect-ratio

我需要使用 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 trac

更新

正如评论指出的,更简单的方法是使用 -vf "scale=640:-2"。 感谢 @BradWerth 提供的优雅解决方案

关于ffmpeg - 使用 FFmpeg 保持宽高比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8218363/

相关文章:

ffmpeg movflags 标志前的加号和减号有什么区别?

Python:如何从视频中获取显示纵横比?

html - 如何使两个 div 具有相同的高度,其中一个必须保持正方形纵横比?

c# - C#中的实时视频流

python - FFmpeg 裁剪 : 'Invalid too big or non positive size for width ' 230 4' or height ' 4096'

c++ - 将电影转换为 OpenNI *.oni 视频

ffmpeg - 如何使用 ffmpeg 在横向模式下制作我的视频

java - 将图像放在视频上方并将视频保存在android中

Android:如何在动画中保持纵横比

python - 如何对文件夹中的所有视频进行下采样?