我是 ffmpeg 的新手,听说它有一个黑色过滤器。我想删除视频顶部和底部的黑条,这样视频将被裁剪为没有黑条的剩余视频。谢谢 :)
答案1
FFmpeg cropdetect 和 crop 过滤器
1.获取作物参数
作物检测可用于提供参数庄稼过滤器。在此示例中,跳过前 90 秒并处理 10 帧:
$ ffmpeg -ss 90 -i input.mp4 -vframes 10 -vf cropdetect -f null -
...
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:215 t:0.215000 crop=1280:720:0:0
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:257 t:0.257000 crop=1280:720:0:0
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:299 t:0.299000 crop=1280:720:0:0
在每一行的末尾,你可以看到它写着crop=1280:720:0:0
。因此根据 cropdetect 我们可以使用crop=1280:720:0:0
。
2. 预览ffplay
$ ffplay -vf crop=1280:720:0:0 input.mp4
3. 使用裁剪滤镜重新编码
$ ffmpeg -i input.mp4 -vf crop=1280:720:0:0 -c:a copy output.mp4
在这个例子中,音频只是流已复制(重新混合)因为您可能不需要重新编码它。
另请参阅
播放期间裁剪
正如您在上面的示例中看到的,ffplay
有些播放器允许您在播放时进行裁剪。这样做的好处是:
- 即时满足;无需重新编码
- 品质得以保留
答案2
@LordNeckbeard 的回答很棒。大多数情况下我都会推荐它。
ffplay 运行良好并且预览效果很好,但是我使用的 ffmpeg 版本在处理我所使用的该视频的音频时遇到了困难。
st:1 error, non monotone timestamps
我最终对提出的答案感到困惑,因为-c:a
我所运行的版本不支持它,而且我使用的视频的比特率转换存在问题。
注:-c:a
可以替换为:-acodec
我发现的最简单的替代免费解决方案是使用手刹。
它的自动裁剪功能可以轻松去除黑条。
希望有所帮助。