Вопрос о двоичном дереве MP4 (AAC)

Я на самом раннем этапе работы над редактором тегов для файлов mp4 и, в частности, файлов iTunes AAC. После некоторого слежки кажется, что структура файла не так сложна, как я сначала подумал, и построена в виде дерева, подобного следующему

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

Данные атома так же велики, как и длина, и могут содержать либо данные (информацию), либо другой атом. Я пытаюсь выяснить, как определить, являются ли данные информацией или реальным атомом. Любое понимание будет высоко оценено.


person deanvmc    schedule 12.04.2010    source источник


Ответы (1)


После долгих поисков кажется, что единственный способ определить, ведет ли узел к данным или к другому узлу, — это знать структуру данных. Поскольку меня интересуют только содержащиеся теги, структуру довольно легко понять. Все теги содержатся в следующей иерархии:

moov.udta.meta.ilst

При углублении в узел ilst каждый тег представляется как дочерний атом, имя которого определяет, какие данные он содержит. Что касается фактических данных, каждый дочерний атом несет в себе своего собственного дочернего элемента, который содержит фактическую информацию и флаг того, что это за информация, например, текст или числа, поэтому в целом это выглядит примерно так:

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

Конечно, это по-прежнему оставляет проблему с самодельными тегами, хранящимися в узле атома uuid, которые такие компании, как Sony, используют для добавления дополнительной информации в файл. Я полагаю, что каждый дочерний элемент в uuid хранит своих дочерних элементов так же, как ilst, но я не уверен.

person deanvmc    schedule 13.04.2010