And*_*per 4 android ffmpeg android-ffmpeg
强制关键帧是什么意思?
根据文档
-force_key_frames[:stream_specifier] expr:expr (output,per-stream) 在指定的时间戳强制关键帧,更准确地说是在每个指定时间后的第一帧。如果参数以 expr: 为前缀,则字符串 expr 会像表达式一样被解释,并针对每个帧进行计算。如果评估不为零,则强制使用关键帧。
我仍然无法理解在指定时间戳强制关键帧意味着什么以及它的用途是什么?我可以看到在分割视频时使用此命令。它的目的是什么?
典型的视频编解码器使用时间压缩,即大多数帧仅存储相对于较早(在某些情况下,未来)帧的差异。因此,为了解码这些帧,必须参考较早的帧,以便生成完整图像。简而言之,关键帧是不依赖其他帧进行解码且其他帧依赖其进行解码的帧。
如果必须对视频进行剪切或分段,而不进行转码(重新压缩),则分段只能发生在关键帧处,因此分段的第一帧是关键帧。如果不是这种情况,则无法播放直到下一个关键帧的片段的帧。
像 x264 这样的编码器通常仅在检测到场景发生变化时才生成关键帧*。这不利于分割,因为关键帧可能以不规则的间隔生成。为了确保可以制作相同且可预测长度的片段,可以使用force_key_frames选项来确保所需的关键帧放置。
-force_key_frames expr:gte(t,n_forced*5)强制关键帧位于 t=5,10,15 秒...
GOP 大小选项g是确保关键帧放置的另一种方法,例如 -g 50强制每 50 帧一个关键帧。
*受最小和最大关键帧距离参数的限制。
| 归档时间: |
|
| 查看次数: |
7313 次 |
| 最近记录: |