【问题标题】:finding a keyframe in mdat在 mdat 中找到关键帧
【发布时间】:2014-02-17 19:24:43
【问题描述】:

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

寻找关键帧

在电影中找到指定时间的关键帧稍微多一些 比在指定时间内找到样本要复杂得多。媒体 处理程序必须使用同步采样原子和采样时间原子 一起寻找关键帧。

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

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

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

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

如何将上述指令翻译成文件中的某个位置(或 mdat atom)?

【问题讨论】:

    标签: compression quicktime iso mpeg-4


    【解决方案1】:

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

    【讨论】:

    • 谢谢 rolf- 虽然视频 trak 中样本的关键帧是否会匹配 iframe 的偏移量(例如,使用 ffprobe 来查找它)?
    猜你喜欢
    • 1970-01-01
    • 2019-05-28
    • 2013-04-04
    • 1970-01-01
    • 2014-02-14
    • 2021-11-03
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    相关资源
    最近更新 更多