在编码时强制自定义H.264帧内帧(关键帧)?

时间:2011-07-23 23:43:59

标签: ffmpeg h.264 libavcodec mencoder keyframe

我有一个视频序列,我想在播放时跳到特定的帧(我的播放器是在iOS中使用AVPlayer实现的,但这是偶然的)。由于这些帧将以不可预测的间隔下降,因此我不能使用大多数视频编码器中存在的标准“每N帧/秒的关键帧”功能。但是,我确实事先知道了目标帧。

为了尽可能有效地跳过这个,我需要在编码时强制目标帧为i帧。理想情况下,在某种GUI中,我可以擦洗帧,将其标记为关键帧,然后(重新)编码我的视频。

如果没有这样的工具,我觉得这可能是通过使用libavcodec滚动自定义编码器来完成的,但我宁愿使用更高级别(最好是可编写脚本的)工具来完成工作。 GUI是不可能的。这是ffmpeg或mencoder可以弯曲的任务吗?

有人有这样做的技巧吗?而且,完全有可能这是一项不可能完成的任务,因为我对h.264编解码器有一些基本的无知。如果是这样,请把我弄好。

3 个答案:

答案 0 :(得分:2)

ffmpeg有一个-force_key_frames选项,它接受一系列任意时间戳以及指定帧的其他方法。来自documentation

-force_key_frames 0:05:00,...

答案 1 :(得分:1)

回答了我自己的问题:可以在Apple Compressor中设置自定义压缩关键帧。

  

压缩标记也称为手动压缩标记。这些是您可以添加到Final Cut Pro序列(或在Compressor预览窗口中)的标记,以指示Compressor何时应在压缩期间生成MPEG I帧。

Source

答案 2 :(得分:0)

你能否使用章节标记在各部分之间跳转?不是一个理想的解决方案,但更容易实现。

您可以使用此软件: http://www.applesolutions.com/bantha/MH.html