使用 ffmpeg 更改纵横比而不指定宽度或高度?

使用 ffmpeg 更改纵横比而不指定宽度或高度?

我有一个 1920 x 1080(16:9)的视频,它看起来被水平拉伸了,因为它应该是 4:3。

可以通过将其转换为 1440 x 1080 的文件来解决,但在这种情况下,需要指定精确的宽度和高度,而这正是我想避免的 - 如果将来的文件是(例如)1280 x 720(16:9)并且它再次水平拉伸并且应该是 4:3,这意味着它应该是 960 x 720,并且在该宽度和高度下看起来很正常 - 但是有没有办法告诉 ffmpeg 简单地输出 4:3 文件,而不管输入文件的高度和宽度是多少?

我尝试使用 ffmpeg 运行此命令,但没有任何变化,即使这是 ffmpeg 文档中所述的正确设置:

ffmpeg -i "input.mp4" -aspect 4:3 "output.mp4"

在过去,这个命令确实改变了我试图(仅稍微)纠正的视频的纵横比,从 16:10 改为 16:9 或类似的比例,但在我当前的 1920 x 1080 文件上,这也没有起到什么作用,只是看起来完全一样:

ffmpeg -i "input.mp4" -aspect 1.8 "output.mp4"

我甚至转换了 30 个版本,从“-aspect 0.1”一直到“-aspect 3.0”,所有 30 个文件看起来都一样,KB 大小相同,但校验和不同(证明 ffmpeg 每次都在做不同的事情,尽管实际上看起来没有什么不同)。

我完全被难住了,因为上面的“-aspect 1.4”确实对一些 AVI 文件起作用了,我试图将它们从 16:10 更改为 16:9(或者反之亦然,记不清了)。

现在相同的命令没有任何作用,“-aspect 4:3”也没有任何作用。

提前致谢。

答案1

Tom Yan,谢谢你的帮助,但我已经明白了。

将 16:9 转换为 4:3

ffmpeg -i "input.mp4" -vf scale=iw/1.3333:ih "output.mp4"

要将 4:3 转换为 16:9,只需反转它即可:

ffmpeg -i "input.mp4" -vf scale=iw*1.3333:ih "output.mp4"

相关内容