2017-04-22 58 views
0

逼迫关键帧是什么意思?强制关键帧的含义是什么?

作为每doc

-force_key_frames [:stream_specifier] EXPR:EXPR(输出,每流)强制在指定时间戳关键帧,更精确地在每个指定的时间后 第一个帧。如果参数的前缀为 且带有expr:,则字符串expr会像表达式一样被解释,并且会针对每个帧对 进行评估。如果评估 非零,则强制关键帧。

不过,我无法理解是什么,在指定的时间戳手段迫使关键帧,什么是它的使用?我可以看到可以使用此命令同时分割video.What是它的目的呢?

回答

2

典型的视频编解码器使用时间压缩,即大多数帧仅存储关于较早(以及在某些情况下未来)帧的差异。因此,为了解码这些帧,必须引用较早的帧,以便生成完整的图像。简而言之,关键帧是不依赖于其他帧进行解码的帧,其他帧依赖其进行解码的帧为

如果必须剪切或分割视频,而不进行代码转换(重新压缩),则分段只能发生在关键帧处,以便分段的第一帧是关键帧。如果不是这种情况,则直到下一个关键帧的段的帧不能被播放。

像x264这样的编码器通常只在检测到发生场景变化时才会生成关键帧*。这不利于分割,因为关键帧可能以不规则的间隔产生。为了确保可以制作具有相同和可预测长度的段,可以使用force_key_frames选项来确保所需的关键帧放置。

-force_key_frames expr:gte(t,n_forced*5)迫使在t = 5,10,15秒的关键帧...

的GOP大小选项g是确保关键帧的位置,例如另一种方法-g 50每50帧强制一个关键帧。

*受限于最小和最大关键帧距离参数。

+0

因此,如果我使用ffmpeg命令来分割视频,应该在'-force_key_frames expr:gte(t,n_forced * 5)'和'-g 5'中的数值应该相同吗? –

+0

不要一次使用这两个选项。但是,不,g是以帧为单位进行测量的。力expr中的值以秒为单位进行测量。 – Mulvya

相关问题