我有一个视频序列,我想在播放时跳到特定的帧(我的播放器是在iOS中使用AVPlayer实现的,但这是偶然的)。由于这些帧将以不可预测的间隔下降,因此我不能使用大多数视频编码器中存在的标准“每N帧/秒的关键帧”功能。但是,我确实事先知道了目标帧。
为了尽可能有效地跳过这个,我需要在编码时强制目标帧为i帧。理想情况下,在某种GUI中,我可以擦洗帧,将其标记为关键帧,然后(重新)编码我的视频。
如果没有这样的工具,我觉得这可能是通过使用libavcodec滚动自定义编码器来完成的,但我宁愿使用更高级别(最好是可编写脚本的)工具来完成工作。 GUI是不可能的。这是ffmpeg或mencoder可以弯曲的任务吗?
有人有这样做的技巧吗?而且,完全有可能这是一项不可能完成的任务,因为我对h.264编解码器有一些基本的无知。如果是这样,请把我弄好。
答案 0 :(得分:2)
ffmpeg有一个-force_key_frames
选项,它接受一系列任意时间戳以及指定帧的其他方法。来自documentation:
-force_key_frames 0:05:00,...
答案 1 :(得分:1)
回答了我自己的问题:可以在Apple Compressor中设置自定义压缩关键帧。
压缩标记也称为手动压缩标记。这些是您可以添加到Final Cut Pro序列(或在Compressor预览窗口中)的标记,以指示Compressor何时应在压缩期间生成MPEG I帧。
答案 2 :(得分:0)
你能否使用章节标记在各部分之间跳转?不是一个理想的解决方案,但更容易实现。