当前位置:首页 > 开发 > FFmpeg > 正文内容

ffmpeg裁剪视频画面

FFmpeg3天前


使用 ffmpeg 裁剪视频,核心是通过 crop 滤镜指定一个矩形区域。这个区域由宽度、高度以及左上角的 X、Y 坐标定义。

基本命令格式

ffmpeg -i input.mp4 -vf "crop=width:height:x:y" -c:a copy output.mp4
  • -i input.mp4:指定输入文件。

  • -vf "crop=width:height:x:y":应用裁剪滤镜。

  • -c:a copy:直接复制音频,避免重新编码,速度更快且无损音质。

  • output.mp4:指定输出文件。

参数详解

crop 滤镜接受四个参数,顺序固定:

  • width:裁剪后视频的宽度(像素)。

  • height:裁剪后视频的高度(像素)。

  • x:裁剪区域左上角的 X 坐标(像素)。0 代表从画面最左侧开始。

  • y:裁剪区域左上角的 Y 坐标(像素)。0 代表从画面最顶部开始。

坐标原点 (0,0) 位于原始视频的左上角。

命令示例

1. 裁剪指定区域

假设要从视频的 (100, 50) 位置,裁剪出一个 640x480 像素的区域:

ffmpeg -i input.mp4 -vf "crop=640:480:100:50" -c:a copy output.mp4

这条命令会保留从左边 100 像素、上边 50 像素开始的 640x480 矩形区域。

2. 裁剪左上角区域

从视频的左上角 (0,0) 开始裁剪:

ffmpeg -i input.mp4 -vf "crop=600:400:0:0" -c:a copy output.mp4

600:400:0:0 等同于从左上角取一个 600x400 的画面。

3. 裁剪右下角区域

要裁剪右下角的区域,需要计算出左上角的坐标。例如原视频是 1920x1080,要裁剪一个 600x400 的右下角区域:

  • X 坐标:1920 - 600 = 1320

  • Y 坐标:1080 - 400 = 680

ffmpeg -i input.mp4 -vf "crop=600:400:1320:680" -c:a copy output.mp4

更灵活的方法是使用 in_w 和 in_h 变量(代表输入视频的宽高),无需手动计算:

ffmpeg -i input.mp4 -vf "crop=600:400:in_w-600:in_h-400" -c:a copy output.mp4

4. 裁剪中心区域

如果只想保留视频正中央的一块区域,可以省略 x 和 y 参数,ffmpeg 会自动居中裁剪。

ffmpeg -i input.mp4 -vf "crop=450:240" -c:a copy output.mp4

这条命令会从视频正中心裁剪出一个 450x240 的区域。

进阶技巧:一次性裁剪多个区域

ffmpeg 的标准命令一次只能输出一个裁剪区域。如果需要从同一视频中裁剪出多个不同区域并分别保存,需要在一个命令中使用 filter_complex 分流处理。

例如,从 input.mp4 中裁剪出两个区域并分别保存为 output1.mp4 和 output2.mp4:

ffmpeg -i input.mp4 -filter_complex \
"[0:v]crop=300:200:10:10[v1]; \
 [0:v]crop=400:300:100:50[v2]" \
-map "[v1]" -map 0:a? output1.mp4 \
-map "[v2]" -map 0:a? output2.mp4
  • [0:v]crop=... [v1]:从第一个输入 [0:v] 裁剪,并将结果命名为 [v1]。

  • -map "[v1]":将 [v1] 这个视频流输出到第一个文件。

  • -map 0:a?:同时将原始音频(如果存在)也复制到输出文件。

注意事项

  1. 宽高为偶数:使用 H.264/H.265 编码时,裁剪后的宽度和高度最好是偶数,否则可能遇到编码错误。

  2. 坐标与尺寸:确保 x + width 不超过原视频宽度,y + height 不超过原视频高度,否则命令会失败。

  3. 数值计算:crop 滤镜支持简单的数学表达式,例如 crop=iw/2:ih/2 可以裁剪出原视频一半大小的中心区域。


转载请注明出处。

本文链接:http://pythonopen.com/?id=7966

返回列表

上一篇:在 .mp4 文件中移除软字幕

没有最新的文章了...

相关文章

FFmpeg 指定比特率导出指定时长视频

方法一:通过设置时间范围和比特率转码这种方法先明确指定要截取的时间范围(1 秒时长),然后进行转码并...

使用FFmpeg混流MP4和MP3

1. 裁剪为最短时长ffmpeg -i input_video.mp4 ...

FFmpeg [mp4 @ 0000013d42a009c0]

[mp4 @ 0000013d42a009c0] Could ...

FFmpeg 分割视频时抛弃音频

FFmpeg分割视频时抛弃音频的方法一、通过流选择参数精准保留视频ffmpeg -i&nb...

FFmpeg 合并视频时抛弃音频

在使用FFmpeg合并视频并抛弃音频时,可根据输入文件的编码一致性选择以下两种方法:方法1:conc...

FFmpeg 图片合成视频,并添加音频

使用FFmpeg将图片合成视频并添加音频你可以使用以下 ffmpeg 命令行将图片序列合成视频并添加...