如何使用FFMPEG正确裁剪和缩放视频?

7
我正在尝试删除视频的顶部和底部黑边。
来自视频的图像示例 image 我想要实现的目标是:

image

视频本身是1280x720的16:9,但由于是从VHS捕获的,其中包含图像信息的部分实际上是4:3。我想以某种方式将其拉伸,直到顶部的黑边消失,而不会扭曲图像。我不关心左右两侧的黑边。
我尝试使用crop和scale,但没有成功。
使用此代码后,在正常屏幕上,VLC中的顶部和底部黑边消失了,但在全屏模式下,黑边又重新出现了。
ffmpeg -i test.avi -filter:v "crop=1280:670" output_video.mp4

我认为这与视频的比例有关,但实际上,我尝试使用的每个scale代码都使图像变形了很多。
我希望有人能帮助我,我对FFMPEG还很新,但到目前为止真的很喜欢它。

玩家将在全屏模式下添加信封条以适应您的屏幕。 - llogan
1个回答

22

我已经获得了您的图像,将其调整为720p,并制作了一个30秒的测试视频。

在我的示例中,我还裁剪了边缘(左/右),因为如@LordNeckbeard所提到的那样,当它们碰到屏幕的边缘时,它们可能会阻止视频的顶部/底部达到屏幕的顶部/底部,这将再次看起来像是在顶部/底部有黑色条纹,无论它们是否存在。

这对我有效:

ffmpeg -y -hide_banner -i "test.avi" -filter:v "crop=iw-400:ih-40,scale=960:720" -pix_fmt yuv420p output_video.mp4

简单解释:

crop=iw-400:ih-40 从输入宽度(iw)中裁剪400(2x200左/右) 从输入高度(ih)中裁剪40(2x20顶部/底部) 如果你想要更“清晰”的边缘,可以多裁剪一点。

scale=960:720 略微缩放视频以将其恢复为原始的720p,960是为了保持美好的4x3比例。 这个缩放不是必需的,取决于个人喜好。

如果这对你有用,请告诉我。


1
嘿,那起作用了!非常感谢你的时间和帮助! - Rivera A. Pablo
5
等一下,如何在不居中的情况下裁剪? - Tomasz Gandor
需要注意的一个重要点是 -filter:v(或 -vf)选项只能使用一次。最后一个选项才会对数据起作用(之前的实例会被静默忽略)。 - Alexis Wilke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接