【发布时间】:2013-08-22 09:11:12
【问题描述】:
我的目标是使用 ffmpeg 准确地分割 XDCAM 或 H264 视频。 我猜这个问题来自它的长 GOP 结构,但我正在寻找一种方法来分割视频而不重新编码它。 我应用偏移量仅对视频的特定部分进行编码(比如说从第 10 秒到媒体结尾) 有什么想法吗?
【问题讨论】:
我的目标是使用 ffmpeg 准确地分割 XDCAM 或 H264 视频。 我猜这个问题来自它的长 GOP 结构,但我正在寻找一种方法来分割视频而不重新编码它。 我应用偏移量仅对视频的特定部分进行编码(比如说从第 10 秒到媒体结尾) 有什么想法吗?
【问题讨论】:
请参考ffmpeg documentation。
你会发现一个选项-frames。该选项可用于为给定的输入流(以下流 0:0 是第一个输入文件,第一个视频流)指定要记录的帧数。该选项可以与其他选项结合使用以在输入文件中的某处开始(时间偏移等......)
ffmpeg -i intput.ts -frames:0:0 100 -vcodec copy test.ts
该命令仅对视频的前 100 帧进行 demux 和 remux(无重新编码)。
如前所述,您可以将其与跳跃结合使用。使用“-ss 偏移量(输入)” ' 您可以指定“帧精确”位置,即。 1 分 10 秒后的第 14 帧 = 0:1:10:14。该选项应在输入之前使用,如下所示。
ffmpeg -ss 00:00:10.0 -i intput.ts -frames:0:0 100 -vcodec copy test.ts
ffmpeg 丢弃前 10 秒并绕过 100 帧到复用器。
【讨论】:
-c:v copy 方法的问题在于,我们只能在完全自给自足的 I 帧开始复制(这可能与每 10 秒仅发生一次一样稀疏,具体取决于GOP 设置),因此指定 -ss 00:00:15.3 没有意义...
我不确定 ffmpeg 是否可以通过 1 次,但是 2-3 次
第一遍:您只需将原始帧转储到文件中 第二遍:您找到封闭的 gop(mxdcam)/idr 帧 (h264),索引
如果索引相等,您可以启动多路复用器。否则你需要从封闭的 gop/idr 帧解码序列到下一个封闭的 gop/idr 帧并编码你想要的起始帧
【讨论】: