Mpeg-4 Audio

M4A Format

Wer sich mit der Technik des iPods beschäftigt wird über m4a Dateien nicht herum kommen. Leider ist ihr Aufbau noch nicht so umfangereich im Internet dokumentiert wie der der mp3 Dateien.

atoms

mpeg4 Dateien sind aus atoms (boxes) aufgebaut, ähnlich wie mp3s aus frames. Ein atom kann entweder Daten ODER andere atoms als childs enthalten, aber nicht beides (es gibt Ausnahmen).
Ein atom beginnt immer mit 4bytes, die seine Größe in bytes angeben. Darauf folgen 4bytes mit dem Namen des atoms, z.B. ftyp, moov, mvhd usw. Die angegebene Größe ist inklusive der Childs, der ersten Ebene aber exklusive der Größe der evtl. enthaltenen Subchilds. Das ftyp Atom ist immer das erste und enthält typ und version.

m4a file format atom

Das mdat atom enthält die eigentlichen Daten der mpeg4 Datei. Das moov atom enthält einige verschiedner Childs mit Basisinformationen wie Spieldauer eines Songs.

Samplerate, SampleCount, Spieldauer

Diese Informationen können dem mdhd Atom entnommen werden.

Bytes Inhalt
4 Atom Size
4 Type 'mdhd'
1 Version
3 Flag
4 Creation Time
4 Modification Time
4 Time Scale (Samplerate)
4 Duration (SampleCount)
2 Language
2 Quality

Spieldauer in Sekunden kann mit Duration/TimeScale berechnet werden.

Bitrate

Die Bitrate kann dem esds Atom entnommen werden

Bytes Inhalt
4 Atom Size
4 Type 'esds'
1 Version
3 Flags
3 ---
1 ---
2 ---
1 ---
1 ---
3 ---
1 ---
1 Object Type ID MPEG4 audio = 64
1 ---
3 ---
4 Maximum Bitrate
4 Average Bitrate
1 ---
3 ---
.... ---
.... ---

iTunes Metadata Atoms

Metadata, wie Artist, Title etc. wird von iTunes in das Atom moov.udta.meta.ilst geschrieben. Das ilst Atom enthält mehrere verschiedene Atoms(siehe Tabelle), die jeweils ein data Atom mit der entsprechenden Information beinhalten.

Name Beschreibung Flag / Klasse
©alb 0xA9616C62 Album 1 / text
©art Artist 1 / text
©ART 0xA9415254 Album Artist 1 / text
©cmt Kommentar 1 / text
©day Year 1 / text
©nam 0xA96E616D Titel 1 / text
©gen Custom Genre 1 / text
©gnre Genre 0 / uint8
trkn Track Nummer 0 / uint8
disk Disk Nummer 0 / uint8
tmpo BPM 21 / uint8