如何使用ffmpeg裁剪视频?


171

我有一个需要录制的屏幕录像的MP4文件。如何在不使用Adobe Premier或Final Cut这样昂贵的工具的情况下完成此任务?我喜欢,ffmpeg因为我以前用过。

Answers:


263

使用crop过滤器

ffmpeg -i in.mp4 -filter:v "crop=out_w:out_h:x:y" out.mp4

其中的选项如下:

  • out_w 是输出矩形的宽度
  • out_h 是输出矩形的高度
  • xy指定输出矩形的左上角

原始图片

原始图像
原始320x240图像

例子1

80x60

要从位置(200,100)开始裁剪80×60的部分:

ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4
  • 在此示例中,音频是流复制的,因此避免了重新编码。

例子2

右下角

裁剪右下角的四分之一:

ffmpeg -i in.mp4 -filter:v "crop=in_w/2:in_h/2:in_w/2:in_h/2" -c:a copy out.mp4

这与:

ffmpeg -i in.mp4 -filter:v "crop=320/2:240/2:320/2:240/2" -c:a copy out.mp4

与以下内容相同:

ffmpeg -i in.mp4 -filter:v "crop=240:120:240:120" -c:a copy out.mp4
  • 您可以使用in_w和来参考输入图像的大小,in_h如第一个示例所示。输出的宽度和高度也可以与out_w和一起使用out_h

例子3

顶部20像素,底部20像素

从顶部裁剪20个像素,从底部裁剪20个像素:

 ffmpeg -i in.mp4 -filter:v "crop=in_w:in_h-40" -c:a copy out.mp4
  • 如果xy省略,过滤器将自动使作物居中,例如在本示例中。

预览版

您可以收割(呵呵)并通过以下方式实时预览ffplay

ffplay -i input -vf "crop=in_w:in_h-40"

这样,您就可以进行实验和调整裁剪,而无需进行编码,查看和重复。

笔记

  • crop 筛选器文档

  • MP4的默认编码器是libx264(H.264视频)或mpeg4(MPEG-4 Part 2视频),具体取决于您的ffmpeg构建。有关更多信息,请参见FFmpeg Wiki:H.264视频编码指南

  • 与其裁剪和重新编码,不如考虑在回放时裁剪。任何值得使用的玩家都可以做到这一点。

  • 古代ffmpeg建造使用-croptop-cropbottom-cropleft-cropright选项,而不是crop过滤器。如果是这种情况,那么您可以选择现代的ffmpeg。开发非常活跃,没有理由使用古董。


2
现在可以与“ avconv”一起使用。
乔斯2015年

我有一个1923x1080,想要1920x1080。这是我尝试过的推荐:/Users/kukodajanos/Workspace/ffmpeg -i /Users/kukodajanos/Desktop/video_640x480-2.mp4 -filter:v "crop=1920:1080:0:0" -c:a copy /Users/kukodajanos/Desktop/video_640x480-4.mp4但是返回了原始电影。
亚诺斯

@Joce JFYI avconv是libav的一部分-的ffmpeg的叉
andrybak

1
值得一提的是,这种技术(使用crop滤镜)可以对视频进行重新编码,请参阅stackoverflow.com/questions/33378548/…如果重新编码对您很重要
abernier

1
编辑以将过时的更改-filter:v为最新的和易于输入的-vf。干杯!
年长者怪杰
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.