在mdat中找到一个关键帧

时间:2014-02-17 19:24:43

标签: compression quicktime iso mpeg-4

quicktime文档建议使用以下方法来查找关键帧:

  

寻找关键帧

     

在电影中查找指定时间的关键帧稍微多一些   比在指定时间内找到样本更复杂。媒体   handler必须使用sync sample atom和time-to-sample atom   在一起,以找到一个关键帧。

     

媒体处理程序执行以下步骤:

     
      
  1. 检查时间到样本原子,以确定包含指定时间内数据的样本编号。
  2.   
  3. 扫描同步样本原子以查找在步骤1中选择的样本编号之前的关键帧。
  4.   
  5. 扫描sample-to-chunk原子以发现哪个块包含关键帧。
  6.   
  7. 从块偏移原子中将偏移量提取到块中。
  8.   
  9. 使用样本大小原子查找块中的偏移量和样本的大小。
  10.   

来源:https://developer.apple.com/library/mac/documentation/QuickTime/qtff/QTFFChap2/qtff2.html

这非常令人困惑,因为多个轨道(“trak”原子)将产生不同的偏移。例如,视频trak的keyframe-sample-chunk-offset值将是一个值,而音频将是另一个值。

如何将上述指令转换为文件(或mdat atom)中的某个位置?

1 个答案:

答案 0 :(得分:0)

这不仅限于关键帧。您通常无法保证文件中不同轨道的样本彼此接近。您希望音频和视频交错,这样您就可以在不过度搜索的情况下播放电影,但这取决于创建该文件的软件。每个轨道都有自己的样本表和块原子,可以告诉您样本在文件中的位置,它们可以在任何地方。 (它们甚至可以在不同的文件中,虽然参考电影现在已被弃用,所以你可能会忽略它们。)