ffmpeg如何将视频缩放到相同大小,并保持其长宽比?

时间:2020-04-03 21:01:10

标签: ffmpeg

(我已经搜索了类似的问题,但没有发现任何可以按照我在此描述的方式工作的东西。)

我有许多视频,这些视频具有不同的样本和显示宽高比(以及不同的帧速率和时基)。我想将它们连接成一个长视频,例如一个播放列表,这意味着对其重新编码。我希望它们按比例放大或缩小以适合所需的输出尺寸(768x432),并在必要时通过竖框保留其长宽比。

我尝试过-vf scale=768:432:force_original_aspect_ratio=decrease,pad=768:432:(ow-iw)/2:(oh-ih)/2,它可以从16:9输入产生768x432 16:9的视频...但是垂直压缩它并增加了boxboxing。 (输入为720x480,采样宽高比为32:27。输入10:11 SAR,4:3 DAR 704x480视频作品。)

2 个答案:

答案 0 :(得分:0)

比例滤波器无法根据输入的SAR进行调整。您必须为此使用表达式:

scale='if(gt(dar\,768/432),768,oh*dar)':'if(gt(dar\,768/432),ow/dar,432)',setsar=1,pad=...

答案 1 :(得分:0)

根据我自己的测试,这对于16:9和非16:9视频均适用,我认为setsar函数的语法和顺序确实会影响结果

-filter_complex "scale=768:432:force_original_aspect_ratio=decrease,setsar=sar=1,pad=768:432:(ow-iw)/2:(oh-ih)/2"

如果该方法可行,并且您希望以尽可能高的质量进行转换,那么我建议您尝试-filter_complex "scale=768:432:force_original_aspect_ratio=decrease:flags=lanczos+full_chroma_int+accurate_rnd,scale=trunc(iw/2)*2:trunc(ih/2)*2,setsar=sar=1,pad=768:432:(ow-iw)/2:(oh-ih)/2"