MP3 Länge berechnen

#2335146
Lesenswert?

also für die Länge gibt's im ID3V2 ein Feld - ist natürlich kein 
Mussfeld. Ich wollte das mal für das erzeugen einer Playlist heranziehen 
- war aber fast immer leer. Evl. gibt es ja ein Tool mit dem man das 
automatisch eintragen kann.
Ansonsten musst du wohl die Frames zählen, ich weis aber jetzt nicht ob 
die Spieldauer dann auch wieder von der Bitrate abhängt.

Sascha
Gast #2335198
Lesenswert?

Moin,

MP3s sind in sogenannte Frames unterteilt, die je nach Format (MPEG 1/2, 
Layer I-III) eine andere Anzahl von Samples haben. Für die "üblichen" 
MP3s sind darin immer 1152 Samples untergebracht, bei 44,1 kHz 
Sampling-Frequenz ist also ein Frame ca. 26,122ms, bei 48 kHz genau 24 
ms lang.
Das gilt für jede in MPEG 1, Layer 3 codierte Datei, unabhängig von der 
Bitrate. Die Bitrate gibt dann also nur noch vor, wie groß (Bytes) ein 
Frame ist.
Im Endeffekt beschränkt sich das Ermitteln der Länge einer MP3 also auf 
das Zählen der Frames.
Da die Frames jedoch je nach Bitrate eine unterschiedliche Größe haben 
können und das komplett unabhängig von den anderen, muss man wirklich 
alle zählen und kann nicht die Größe der Datei durch die Größe eines 
"üblichen" Frames dividieren. Letzteres funktioniert nur bei CBR 
(constant bitrate), also wenn alle Frames gleich groß sind. Für die 
wirklich universelle Lösung, die immer funktioniert, muss man wirklich 
zählen.
Um die einzelnen Frames zu finden, muss man deren Länge ermitteln und 
dann eben vom einen zum anderen Frame springen. Dafür gibts bei jedem 
Frame einen Header, der aus 4 Bytes besteht. Wie der Header aufgebaut 
ist, findet man quasi überall im Netz und auch eine Formel um die Länge 
des Frames zu ermitteln sollte nicht allzu schwer zu finden sein.

Ich hoffe ich konnte damit etwas helfen. Ich habe selber einen relativ 
flexiblen MP3/WAVE-Player entwickelt und musste mir die Infos mühsam 
zusammen suchen da scheinbar keiner so wirklich bescheid weiß ;)

Gruß,

Tobi

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren