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

如何使用FFMPEG分割视频,使每个块以关键帧开始?

郁承运
2023-03-14

我们需要拆分一个大的直播WMV视频饲料的小块,所有的大小相同。我们制作了一个脚本,可以很好地执行此操作,除了一件事:视频块不是从关键帧开始的,所以当播放大多数视频块时,它们不会显示任何图像,直到最终到达原始视频的关键帧为止。

难道没有办法告诉ffmpeg让输出视频从一个关键帧开始吗?

下面是我们的命令行现在的样子:

ffmpeg.exe -i "C:\test.wmv" -ss 00:00:00 -t 00:00:05 -acodec copy -vcodec copy -async 1 -y  "0000.wmv"
ffmpeg.exe -i "C:\test.wmv" -ss 00:00:05 -t 00:00:05 -acodec copy -vcodec copy -async 1 -y  "0001.wmv"

等等...

共有1个答案

习高格
2023-03-14

FFMPEG的最新版本包含了一个新的选项“Segment”,这正是我认为您需要的。

ffmpeg-i input.mp4-acodec copy-f segment-vcodec copy-reset_timestamps 1-map 0输出%d.mp4

这会产生一系列编号的输出文件,这些文件根据关键帧被拆分为段。在我自己的测试中,它工作得很好,尽管我没有在任何超过几分钟的东西上使用过它,并且只在MP4格式下使用过。

 类似资料:
  • 我有一堆从Youtube下载的视频,我想从他们中提取帧。我使用的当前命令是: 但是我还想设置-r和-t选项。我想要的fps是每个视频的fps,持续时间是他们的持续时间。我知道如果我不设置-r选项,默认值是25 fps。

  • 我正在尝试使用ffmpeg逐帧编写视频,如下所述:http://zulko.github.io/blog/2013/09/27/read-and-write-video-frames-in-python-using-ffmpeg/ 然而,我总是得到一个OSError:[Errno 22]无效参数。我在Windows7上使用Python 3.4。代码如下: 任何帮助都非常感谢。 编辑:根据此处的要求

  • 我正在尝试提取几个视频上的所有帧。这些视频是在以可变帧速率保存输出的摄像机上拍摄的,因此,一些帧在时间上比其他帧更接近(根据mediainfo,每秒27到30帧) 这些帧将与一些元数据同步,因此我不仅需要提取它们,还需要保留视频每帧拍摄的[相对]时间信息。 我一直在使用ffmpeg来提取视频帧,当视频帧速率不再恒定时,挑战就来了。任何其他不同于ffmpeg的方法或程序都可以完成任务。

  • 我想合并两个视频。两者都有相同的决心。第二个视频没有任何音频 ffmpeg-itest.mp4-ipicture.mp4-filter_complex"[0: v][0: a][1: v][1: a]conat=n=1: v=2: a=1[v][a]"-map"[vv]"-map"[aa]"mergedVideo.mp4 这是我正在使用的命令,但我得到了以下错误流说明符:filtergraph d

  • 这将从到获取所有i帧。 但是我想做的是给出一个帧号列表,并让ffmpeg提取出与每个帧号最接近的关键帧。有没有一种方法可以用ffmpeg来实现这一点,或者我必须在libavcodec上编写自己的程序来实现这一点?