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

时间:2010-04-12 21:06:31

标签: c# parsing mp4 aac

我正处于为mp4文件制作标签编辑器的早期阶段,更具体地说是iTunes AAC文件。在做了一些窥探后,似乎文件的结构并没有我想象的那么复杂,并且构建在如下所示的树中

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

原子的数据与长度一样大,可以包含数据(信息)或其他原子。我想弄清楚的是如何确定数据是信息还是实际原子。任何见解都会非常感激。

1 个答案:

答案 0 :(得分:1)

经过大量窥探后,确定节点是否通向数据或另一个节点的唯一方法是了解数据结构。因为我只对所包含的标签感兴趣,所以结构非常容易理解。所有标签都包含在以下层次结构中:

moov.udta.meta.ilst

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

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

当然,这仍然存在存储在 uuid 原子节点中的自制标签的问题,像索尼这样的公司用来向该文件添加更多信息。我会想象 uuid 中的每个孩子都以 ilst 的方式存储孩子,但我无法确定。