当前位置: 首页 > 面试题库 >

使用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:0300: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

现在工作正常。


问题答案:

您可能在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结束使用-t 5。如果您使用的是ffmpeg的当前版本,也可以在上述命令中将替换-t-to在指定时间结束。



 类似资料:
  • 我尝试使用以下命令使用视频的开始和结束时间来剪切视频 通过使用上述命令,我想将视频从剪切到。但它并不是在这两个时间之间剪掉视频,而是剪掉前11秒的视频。有谁能帮我解决这个问题吗? 编辑1: 我尝试通过使用以下命令来剪切,这是由mark4o建议的 但显示出以下错误。 编码器'AAC'是实验性的,但未启用实验性编解码器 因此我将添加到命令中, 现在一切正常。

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

  • 如果我尝试对其运行第一个命令行,则输出视频将给出一个错误。 所有的反馈赞赏缩短一个视频,然后添加结尾。 干杯!瑞安

  • 我正在尝试使用ffmpeg来剪切avi文件的一部分。我知道以前有人问过类似的问题,但我已经搜索了大量其他帖子,我看不出我哪里出错了。 我在7秒视频上测试的命令行参数是: -ss 00:00:01-t 00:00:01-i"C:\录音\2013-09-11\摄像机1\摄像机1_2013-09-11_22-23-43.avi"-vcodec复制-acodec复制"I:\clip2.avi" 输出为:

  • 是否可以跟踪卡桑德拉的“预订”? 基本上,我的大多数查询将涉及一个和一个,我希望在其中找到与该时间相交的所有保留。 我的模式如下所示: 我输入了一些数据,如下所示: 我正在尝试这样的查询: 我得到一个这样的错误: 我认为这是可以做到的,因为在这个SO问题中似乎是这样的:在cassandra中存储时间范围 但是,架构没有发布,我们也没有使用pycassa,而且我似乎无法弄清楚如何将其映射到CQL。