我正处于为mp4文件制作标签编辑器的早期阶段,更具体地说是iTunes AAC文件。在做了一些窥探后,似乎文件的结构并没有我想象的那么复杂,并且构建在如下所示的树中
4 Bytes [Atom Length] 4 Bytes [Atom Name] X Bytes [Atom Data]
原子的数据与长度一样大,可以包含数据(信息)或其他原子。我想弄清楚的是如何确定数据是信息还是实际原子。任何见解都会非常感激。
答案 0 :(得分:1)
经过大量窥探后,确定节点是否通向数据或另一个节点的唯一方法是了解数据结构。因为我只对所包含的标签感兴趣,所以结构非常容易理解。所有标签都包含在以下层次结构中:
moov.udta.meta.ilst
在深入研究ilst节点时,每个标记都表示为一个子原子,其名称决定了它包含的数据。至于实际数据,每个子原子都带有一个自己的子,它包含实际信息和一个关于它是什么类型的信息的标志,例如文本或数字,所以它总是看起来像这样:
moov.udta.meta.ilst.[atom size][atom name].[data]
当然,这仍然存在存储在 uuid 原子节点中的自制标签的问题,像索尼这样的公司用来向该文件添加更多信息。我会想象 uuid 中的每个孩子都以 ilst 的方式存储孩子,但我无法确定。