quicktime文档建议使用以下方法来查找关键帧:
寻找关键帧
在电影中查找指定时间的关键帧稍微多一些 比在指定时间内找到样本更复杂。媒体 handler必须使用sync sample atom和time-to-sample atom 在一起,以找到一个关键帧。
媒体处理程序执行以下步骤:
- 检查时间到样本原子,以确定包含指定时间内数据的样本编号。
- 扫描同步样本原子以查找在步骤1中选择的样本编号之前的关键帧。
- 扫描sample-to-chunk原子以发现哪个块包含关键帧。
- 从块偏移原子中将偏移量提取到块中。
- 使用样本大小原子查找块中的偏移量和样本的大小。
醇>
来源:https://developer.apple.com/library/mac/documentation/QuickTime/qtff/QTFFChap2/qtff2.html
这非常令人困惑,因为多个轨道(“trak”原子)将产生不同的偏移。例如,视频trak的keyframe-sample-chunk-offset值将是一个值,而音频将是另一个值。
如何将上述指令转换为文件(或mdat atom)中的某个位置?
答案 0 :(得分:0)
这不仅限于关键帧。您通常无法保证文件中不同轨道的样本彼此接近。您希望音频和视频交错,这样您就可以在不过度搜索的情况下播放电影,但这取决于创建该文件的软件。每个轨道都有自己的样本表和块原子,可以告诉您样本在文件中的位置,它们可以在任何地方。 (它们甚至可以在不同的文件中,虽然参考电影现在已被弃用,所以你可能会忽略它们。)