网站搜索

如何使用 ffmpeg 剪切和裁剪视频


本教程介绍如何使用 ffmpeg 从命令行剪切和裁剪视频。

FFmpeg 是一个多平台、开源工具和库套件,用于从命令行编辑多媒体和流。它支持大多数多媒体格式的编码和解码,包括不常见的文件。阅读本教程(包括过程和视频截图)后,您将了解如何使用 ffmpeg 剪切和裁剪视频。

安装 ffmpeg:

要在基于 Debian 的 Linux 发行版上安装 ffmpeg,请使用命令 apt,如下例所示。

sudo apt install ffmpeg

要在 Redhat/Centos 上安装 ffmpeg,请运行以下命令:

yum localinstall
yum install ffmpeg ffmpeg-devel

如何使用ffmpeg剪切视频:

使用 ffmpeg 剪切视频是一项非常简单、快速且资源消耗低的任务。您只需要定义开始或结束时间,或两者(如果需要)和输出文件。我将使用我刚刚为本教程下载的 Linux 提示视频(持续时间 00:03:280)。

下面的命令使用 ffmpeg 从标志 -ss 指定的第二个 00:00:05 开始剪切视频;这是定义新视频起点的标志,以防您想剪切开头的一部分。如果您只想剪切视频末尾的一部分,则不需要使用此标志。如您所见,计时格式必须为 HH:MM:SS(小时、分钟、秒)。例如,对于 2 分 3 秒的计时,您应该键入 00:02:03。

-i 标志用于指定要编辑的文件;在本例中,该文件是 LinuxHint-vim.mp4。

选项-t用于指定新文件的结尾;在这种情况下,视频将在 00:02:00 结束。与 -ss 类似,如果您不想剪切视频结尾的部分,而只想剪切开头的部分,则不需要应用此标志。

在这种情况下,-c copy 标志用于定义输出文件;在本例中,文件editedvideo.mp4。

ffmpeg -ss 00:00:05 -i LinuxHint-vim.mp4 -t 00:02:00 -c copy editedvideo.mp4

整个操作只需几秒钟,不消耗计算机资源。

下一个示例演示如何仅剪切 00:03:28 秒视频的结尾部分。因此,我省略了选项 -ss,因为我想保留起点,并通过实施 -t 标志在 00:02:00 剪切视频。

ffmpeg -i LinuxHint-vim.mp4 -t 00:02:00 -c copy editedvideo2.mp4

与前面的示例相反,下面的命令仅使用 -ss 标志来剪切视频开头的部分。在这种情况下,新输出将从 00:01:30 开始。

ffmpeg -ss 00:01:30 -i LinuxHint-vim.mp4 -c copy editedvideo3.mp4

如您所见,使用 ffmpeg 剪切视频是一个简单而快速的过程。

使用 ffmpeg 裁剪黑色边框:

本教程的这一部分介绍如何使用 ffmpeg 裁剪视频。

您可以使用 ffmpeg 尝试自动检测如何裁剪视频以去除黑色边框。

在此示例中,我将使用 320×240 视频,如下所示:

下面的命令将尝试检测正确的尺寸和位置以正确裁剪视频。

ffmpeg -i linux-foundation.mp4 -vf cropdetect -f null - 2>&1 | awk '/crop/ { print $NF }' | tail -1

如您所见,ffmpeg 返回正确的宽度 (320)、高度 (208)、X 和 Y 位置以正确裁剪视频。

X 位置:X 位置定义从左边距开始的水平裁剪起点,其中左边距为 0。

Y 位置:Y 是垂直裁剪起始点,上边距为 0。

视频下面的示例将被裁剪;您可以看到 -filter:v 标志。

-filter 标志实现一个过滤器图,该过滤器图划分输入流,裁剪它,并将其与其他流叠加。如您所见,下面的命令中定义的尺寸和位置是由上一个命令提供的。

另外,您可以看到省略了标志“-c copy”,并且输出文件名写在作物标志之后。

ffmpeg -i linuxfoundation.mp4 -filter:v "crop=320:208:0:16" output.mp4

如您所见,黑色边框已被删除:

关于使用 ffmpeg 裁剪视频:

您可以使用以前的技术裁剪视频的任何部分,而不仅仅是黑色边框。

下面的命令将裁剪上一个视频,返回 200×200 的图像,从左侧开始 200 像素,从上边距开始 0 像素。

fffmpeg -i output.mp4 -filter:v "crop=200:200:200:0" output2.mp4

这是裁剪后的视频:

当然,您可以定义其他类型的度量,例如矩形。

我们将制作的视频(与第一个教程部分相同)如下图所示。

在第一个示例中,我们仅定义输出尺寸,但不定义位置。 如果不指定位置,ffmpeg会自动裁剪视频的中心。因此,在下面的示例中,仅定义了视频的高度和宽度,但没有定义位置,ffmpeg 将裁剪视频并返回视频中心的 500×500 裁剪输出。

ffmpeg -i LinuxHint-vim.mp4 -filter:v "crop=500:500" LinuxHintvideo2.mp4

我们得到裁剪后的 500x500px 输出:

如果需要,可以使用ffmpeg命令结合grep来了解原始视频分辨率,如下所示。

ffmpeg -i LinuxHint-vim.mp4 2>&1 | grep Video: | grep -Po '\d{3,5}x\d{3,5}'

如果您喜欢 ffmpeg 的简单性和性能,您可以在此处访问 ffmpeg 官方文档,了解可用于编辑媒体的许多附加特性和功能。

结论:

在 ffmpeg 的帮助下,从命令行剪切和裁剪媒体非常容易。 ffmpeg 的主要优点之一是资源消耗低和速度快。本教程向任何 Linux 用户级别或任何没有视频编辑知识的人展示了通过学习一些命令和友好的语法,可以在文本模式下专业地编辑视频。 FFmpeg 是多平台的,使其成为从命令行编辑视频和音频文件的绝佳标准工具。 FFmpeg 是 VLC 播放器等广为人知的工具的一部分,并包含在 iTunes 和 Youtube 的核心处理中。

我希望本教程有用。继续关注 Linux Hint 以获取更多 Linux 技巧和教程。

相关文章: