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.
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.
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.
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.
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 | --- |
.... | --- |
.... | --- |
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 |