当前位置: 首页 > 知识库问答 >
问题:

利用ffmpeg实现基于开始和结束时间的视频裁剪

易俊驰
2023-03-14

我尝试使用以下命令使用视频的开始和结束时间来剪切视频

ffmpeg -ss 00:00:03 -t 00:00:08 -i movie.mp4 -acodec copy -vcodec copy -async 1 cut.mp4

通过使用上述命令,我想将视频从00:00:03剪切到00:00:08。但它并不是在这两个时间之间剪掉视频,而是剪掉前11秒的视频。有谁能帮我解决这个问题吗?

编辑1:

我尝试通过使用以下命令来剪切,这是由mark4o建议的

ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4

但显示出以下错误。

编码器'AAC'是实验性的,但未启用实验性编解码器

因此我将-strict-2添加到命令中,

ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 -strict -2 cut.mp4

现在一切正常。

共有2个答案

汤飞羽
2023-03-14

试试用这个。这是我找到的最快、最好的FFMPEG方法:

 ffmpeg -ss 00:01:00 -i input.mp4 -to 00:02:00 -c copy output.mp4

这个命令在几秒内修剪你的视频!

命令说明:

-i:指定输入文件。在这种情况下,它是(input.mp4)。
-ss:与-i一起使用,它在输入文件(input.mp4)中查找位置。
00:01:00:这是剪裁后的视频开始的时间。
-to:指定从开始(00:01:40)到结束(00:02:12)的持续时间。
00:02:00:这是您修剪的视频的结束时间。
-C复制:这是一个通过流复制进行修剪的选项。(注意:非常快)

定时格式为:HH:MM:SS

请注意,当前的高票回答是过时的,修剪将是极其缓慢的。更多信息,请看这篇ffmpeg官方文章。

太叔弘壮
2023-03-14

您可能在3秒标记处没有关键帧。因为非关键帧编码与其他帧的差异,所以它们需要从前一个关键帧开始的所有数据。

使用mp4容器,可以在非关键帧处剪切,而不需要使用编辑列表重新编码。换句话说,如果3s之前最接近的关键帧在0s,那么它将复制从0s开始的视频,并使用编辑列表告诉播放器开始播放3秒。

如果您使用的是git master中最新的ffmpeg,那么在使用您提供的命令调用时,它将使用一个编辑列表来完成此操作。如果这对您不起作用,那么您可能正在使用ffmpeg的旧版本,或者您的播放机不支持编辑列表。有些播放机会忽略编辑列表,始终从头到尾播放文件中的所有媒体。

如果您希望精确地从非关键帧开始剪切,并且希望它在不支持编辑列表的播放机上从所需的点开始播放,或者希望确保剪切的部分实际上不在输出文件中(例如,如果它包含机密信息),那么您可以通过重新编码来做到这一点,以便在所需的开始时间精确地存在关键帧。如果未指定copy,则默认情况下重新编码。例如:

ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4

当重新编码时,您可能还希望包括额外的质量相关选项或特定的AAC编码器。有关详细信息,请参阅FFMPEG的x264编码指南(视频)和AAC编码指南(音频)。

此外,-t选项指定持续时间,而不是结束时间。以上命令将从3s开始对视频的8s进行编码。要从3s开始到8s结束,请使用-t5。如果您使用的是当前版本的ffmpeg,您还可以将上面命令中的-t替换为-to以在指定时间结束。

 类似资料:
  • 问题内容: 我尝试通过使用以下命令使用视频的开始和结束时间剪切视频 通过使用上述命令,我想将视频从剪切为。但是,这并不是在这段时间之间剪切视频,而是在前11秒内剪切视频。谁能帮我解决这个问题? 编辑1: 我试图通过使用mark4o建议的以下命令进行剪切 但是显示以下错误。 编码器“ aac”是实验性的,但未启用实验性编解码器 所以我在命令中添加了 现在工作正常。 问题答案: 您可能在3秒标记处没有

  • 我正在使用https://github.com/writingminds/ffmpeg-android-java命令裁剪视频: 其中“in”是inputfile,“out”是outputfile。

  • 得到的包含我指定的6秒,后跟8或9秒的空音频。我的指挥有问题吗? 编辑: 表示并给我一个文件,从10秒开始有8秒的音频,然后有9或10秒的静默。 我的目标是通过REST API将这个6秒的文件流到前端。我希望用户能够正确下载此文件。理想情况下,它不会有不一致的元数据(14秒而不是6秒)。

  • 问题:是否有一个单独的FFMPEG裁剪过滤器可以用于所有视频,包括(但不限于):856x480、640x480和1280x720? 我们有一个视频处理系统(使用DirectShow),所有输入到这个系统的视频必须是16:9使用MJPEG编解码器。我们使用下面的ffmpeg命令将源视频转换为MJPEG,缩放像素使其为正方形,然后裁剪到16:9的纵横比。这对大多数输入视频都很管用,输出正是我们想要的。

  • 我目前有问题,使我的音频和视频流保持同步。 以下是我正在使用的AVCodecContexts: 视频: 这演奏得很完美。 然而,当我对音频做同样的操作时,视频以慢动作播放,首先播放音频,然后在没有声音的情况下继续播放视频。 我找不到任何地方的例子如何设置PTS/DTS位置的视频/音频在MP4文件。任何帮助的例子都将是伟大的! 而且,我首先写视频帧,然后(一旦它们都写好了)我写音频。我已经用注释中建