如何以 3 种简略的形式应用 FFmpeg 剪切视频(提取 / 修剪)
2020 年 10 月 12 日 Krishna Rao Vijayanagar FFmpeg
在本教程中,咱们将理解如何应用 FFmpeg 以 3 种不同的形式剪切 / 修剪 / 提取视频文件的一部分。有一些疾速的办法能够应用不太准确的查找和复制视频来实现这一点,并且有一种帧准确技术,尽管速度很慢,但能够抉择从新编码视频。
寻找应用 -ss 参数
假如您要提取视频的一部分——比方从第 10 秒到第 20 秒。
您须要做的第一件事是通知 FFmpeg 搜寻到第 10 秒,对吗?这是应用 FFmpeg 命令行中的 -ss
参数实现的,语法为 –
./ffmpeg -ss <time> -i <inputvideo> .......
在这里,工夫被指定为HH:MM:SS.MILLISECONDS
。例如,您能够通知 FFmpeg 寻找 01:02:03——即电影 1 小时的第 2 分钟的第 3 秒!
指定完结工夫
应用-ss
,咱们指定了开始工夫。当初,让咱们学习指定完结工夫。而且,如果咱们将这两者放在一起,咱们能够应用 FFmpeg 无效地剪切 / 拼接视频。
-t
范畴
您能够应用参数指定所需剪辑的持续时间 -t
。例如,-ss 40 -t 10
批示 FFmpeg 从第 40 秒开始提取 10 秒的视频。
-to
范畴
您能够应用参数指定完结工夫 -to。例如,-ss 40 -to 70
批示 FFmpeg 从第 40 秒到第 70 秒提取 30 秒的视频。
留神 :如果你同时应用 -t 和 -to,那么只有-t
将被应用。
应用从新编码进行剪切 / 修剪
如果您在剪切 / 修剪时从新编码您的视频,那么您将取得一个准确到帧的剪切,因为 FFmpeg 将从新编码视频并从 I 帧开始。这是应用输入搜寻的命令行。在此示例中,您将批示 FFmpeg 读取名为 inputVideo.mp4 并提取 5 秒的视频,从第 3 秒开始到第 8 秒完结 – 同时应用libx264
.
ffmpeg -i inputVideo.mp4 -ss 00:03 -to 00:08 -c:v libx264 -crf 30 trim_opseek_encode.mp4
您还能够应用此命令行以特定比特率或品质从新编码,应用 crf
更改分辨率等。
请记住,此选项将破费大量工夫和资源,因为您正在执行从新编码。然而,它的确有不可漠视的长处。
我剪切了一个 5 秒的局部并应用 libx264 编码. 您能够看到它在申请的工夫精确启动,没有任何卡顿或黑框。如果仔细观察,工夫戳会表明这一点。
这是因为 FFmpeg 从一开始就对视频进行从新编码,并且能够依据须要插入 I 帧以生成视频的帧准确剪辑。
无需从新编码即可疾速剪切 / 修剪(应用复制和输出搜寻)
这是一个简略的命令行,您能够应用它来剪切 / 修剪 / 提取视频的一部分——快!
ffmpeg -ss 00:00:03 -i inputVideo.mp4 -to 00:00:08 -c:v copy -c:a copy trim_ipseek_copy.mp4
参数很容易了解。您正在批示 FFmpeg 读取名为 inputVideo.mp4 并提取 5 秒的视频,该视频从第 3 秒开始到第 8 秒完结。
相干:应用 FFmpeg 进行音频转码 – 应用 FFmpeg 轻松更改音频编解码器
此外,您通知 FFmpeg 复制音频和视频而不执行从新编码——这十分快!
将输出搜寻参数 -ss
放在参数 -i
之前, 并且十分快,因为 FFmpeg 从 I 帧跳转到 I 帧以达到搜寻点。
有什么问题吗?
因为搜寻操作在 I 帧之间跳转,它不会精确地进行在您申请的帧(或工夫)上。它将搜寻最近的 I 帧并从该点开始复制操作。
应用不从新编码的输入搜寻进行剪切 / 修剪
如果咱们在 -i
参数之后插入 -ss
参数,则称为输入搜寻。
ffmpeg -i inputVideo.mp4 -ss 00:00:03 -to 00:00:08 -c:v copy -c:a copy trimmedVideo.mp4
然而,这里又是一个问题。在视频压缩中,您领有独立编码的 I 帧,并且您领有依赖于其余帧进行解码的预测帧 (P, B)。
如果您指定的开始工夫落在预测帧上,则复制操作将从该帧开始(称为 X)。输入中可能短少“X”须要解码的帧!因而,在达到第一个 I 帧之前,输入视频可能不会顺利启动,并且可能会呈现一些卡顿或彩色视频。
这是输入。
您能够看到工夫戳从第 5 秒左右开始,始终继续到第 8 秒。同样,相似于输出搜寻,它无奈找到 I 帧来执行精确的剪辑。
论断
有了它——应用 FFmpeg 剪切、修剪、提取局部视频的三种简略办法。这三种办法都满足不同的需要,所以肯定要尝试一下,理解您的要求,并为您的我的项目应用正确的办法!
请在此处拜访咱们的其余 FFmpeg 教程。
谢谢你,下次见!