代码之家  ›  专栏  ›  技术社区  ›  deanvmc

关于MP4(AAC)二叉树的问题

  •  1
  • deanvmc  · 技术社区  · 14 年前

    我在为mp4文件和更具体的itunesaac文件开发标签编辑器的早期阶段。在做了一些窥探之后,文件的结构似乎不像我第一次想的那么复杂,而是构建在一种树中,如下所示

    4 Bytes [Atom Length]  4 Bytes [Atom Name]  X Bytes [Atom Data]
    

    一个原子的数据与长度一样大,可以包含数据(信息)或另一个原子。我想弄清楚的是如何判断数据是信息还是实际的原子。如有任何见解,将不胜感激。

    1 回复  |  直到 14 年前
        1
  •  1
  •   deanvmc    14 年前

    在进行了大量的窥探之后,确定一个节点是指向数据还是指向另一个节点的唯一方法似乎是通过了解数据结构。因为我只对包含的标签感兴趣,所以结构很容易理解。所有标记都包含在以下层次结构中:

    moov.udta.meta.ilst
    

    深入研究ilst节点时,每个标记都表示为子原子,子原子的名称决定了它包含的数据。至于实际的数据,每个子原子都有自己的子原子,其中包含实际的信息和一个标志,表明它是什么类型的信息,例如文本或数字,所以总的来说,它看起来像这样:

    moov.udta.meta.ilst.[atom size][atom name].[data]
    

    当然,这仍然会留下存储在数据库中的自制标记的问题 uuid公司 uuid公司 以同样的方式存储其子对象 ilst公司