使用ffmpeg将不同宽度的视频调整为固定的高宽比


17

我想将很多视频文件转换为我们公司网站的Flash视频。我要求所有视频都必须为360p格式,因此其尺寸应为Nx360。

FFmpeg的使用-s参数指定的目标分辨率w ^ X ^ h。我不知道W¯¯ IDþ,因为它依赖于源文件的宽高比。如果源是640x480,则目标将是480x360。如果源为848x480,则目标为636x360。

有办法用ffmpeg开关吗?它将保留宽高比,而我仅指定目标视频的高度吗?

我可以通过编写一个程序来启动ffprobe来获取源视频的大小,计算宽高比,然后计算新的宽度,从而轻松解决该问题。

Answers:


15

您可以尝试添加以下视频过滤器:

-vf "scale=-1:360" 

-1 在这种情况下,表示可变/未知,因此此过滤器会调整视频的大小以保留输入的宽高比,并保持360为高度。

对我来说,这达到了您正在寻找的相同结果。



6

还没有足够的要点就现有答案发表评论,但这是紧随user65600的回答之后,当特定编解码器需要宽度/高度可被2整除时(例如libx264),该方法会更进一步。

当您使用-1(变量/未知)时,它可以返回一个奇数。为了保证偶数,您必须使用类似的东西trunc(ow/a/2)*2,它会在保持宽高比的同时自动计算最接近的偶数。

-vf "scale=trunc(ow/a/2)*2:360"

资料来源:https : //ffmpeg.org/trac/ffmpeg/ticket/309


3

-vf "scale=trunc(ow/a/2)*2:360" 由于出现“自我引用”错误而无法正常工作。

而是,以下作品:

-vf“ scale = -1:360,scale = trunc(iw / 2)* 2:360”

因此,通过两次连续缩放可避免自参考,并且舍入在第二步中完成。可爱,不是吗?:)


简单filtergraph'scale = -1:480; scale = trunc(iw / 2)* 2:480'没有确切的一个输入和输出。打开过滤器时出错!
digitalPBK 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.