amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > MPEG Audio Header Format [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

06.08.2005, 12:10 Uhr

thomas
Posts: 7717
Nutzer

Hallo,

kennt jemand eine Quelle für das MPEG Audio Header-Format, die auch stimmt ? Wenn man mit Google sucht, findet man jede Menge, wobei das alles auf ca. drei Versionen reduzieren läßt.

Mein Problem ist die Berechnung der Frame-Länge in Bytes. Die drei Versionen unterscheiden sich vor allem bei der Bitrate-Tabelle und der Formel zu Berechnung der Frame-Länge. Bei MPEG1 sind sie sich alle einig, aber bei MPEG2 widersprechen sie sich.

Ich habe hier eine mp3-Datei, die laut Header ein MPEG2 Layer 3 ist. Die meisten Frames lassen sich nach den o.a. Formeln berechnen, aber zwischen durch sind einige Frames, die wohl um ca. 100-200 Bytes länger sind als die berechnete Länge.

Hier ist das Ergebnis:
code:
offset    = 0
version   = 2 (MPEG2)
layer     = 1 (Layer3)
protected = 1
bitrate   = 6 (48)
frequency = 0 (22050)
padding   = 1
private   = 0
mode      = 1
mode_ext  = 0
copyright = 0
original  = 0
emphasis  = 0
framesize = 314
next offs = 314
------------------------------
offset    = 470
version   = 2 (MPEG2)
layer     = 1 (Layer3)
protected = 1
bitrate   = 6 (48)
frequency = 0 (22050)
padding   = 1
private   = 0
mode      = 1
mode_ext  = 2
copyright = 0
original  = 0
emphasis  = 0
framesize = 314
next offs = 784
------------------------------
offset    = 784
version   = 2 (MPEG2)
layer     = 1 (Layer3)
protected = 1
bitrate   = 6 (48)
frequency = 0 (22050)
padding   = 0
private   = 0
mode      = 1
mode_ext  = 2
copyright = 0
original  = 0
emphasis  = 0
framesize = 313
next offs = 1097
------------------------------
offset    = 1097
version   = 2 (MPEG2)
layer     = 1 (Layer3)
protected = 1
bitrate   = 6 (48)
frequency = 0 (22050)
padding   = 1
private   = 0
mode      = 1
mode_ext  = 2
copyright = 0
original  = 0
emphasis  = 0
framesize = 314
next offs = 1411
------------------------------
offset    = 1411
version   = 2 (MPEG2)
layer     = 1 (Layer3)
protected = 1
bitrate   = 6 (48)
frequency = 0 (22050)
padding   = 0
private   = 0
mode      = 1
mode_ext  = 2
copyright = 0
original  = 0
emphasis  = 0
framesize = 313
next offs = 1724
------------------------------
offset    = 1724
version   = 2 (MPEG2)
layer     = 1 (Layer3)
protected = 1
bitrate   = 6 (48)
frequency = 0 (22050)
padding   = 1
private   = 0
mode      = 1
mode_ext  = 2
copyright = 0
original  = 0
emphasis  = 0
framesize = 314
next offs = 2038
------------------------------
offset    = 2038
version   = 2 (MPEG2)
layer     = 1 (Layer3)
protected = 1
bitrate   = 6 (48)
frequency = 0 (22050)
padding   = 0
private   = 0
mode      = 1
mode_ext  = 2
copyright = 0
original  = 0
emphasis  = 0
framesize = 313
next offs = 2351
------------------------------
offset    = 2351
version   = 2 (MPEG2)
layer     = 1 (Layer3)
protected = 1
bitrate   = 6 (48)
frequency = 0 (22050)
padding   = 1
private   = 0
mode      = 1
mode_ext  = 2
copyright = 0
original  = 0
emphasis  = 0
framesize = 314
next offs = 2665
------------------------------
offset    = 2821
version   = 2 (MPEG2)
layer     = 1 (Layer3)
protected = 1
bitrate   = 6 (48)
frequency = 0 (22050)
padding   = 1
private   = 0
mode      = 1
mode_ext  = 2
copyright = 0
original  = 0
emphasis  = 0
framesize = 314
next offs = 3135
------------------------------
offset    = 3135
version   = 2 (MPEG2)
layer     = 1 (Layer3)
protected = 1
bitrate   = 6 (48)
frequency = 0 (22050)
padding   = 0
private   = 0
mode      = 1
mode_ext  = 2
copyright = 0
original  = 0
emphasis  = 0
framesize = 313
next offs = 3448
------------------------------
offset    = 3448
version   = 2 (MPEG2)
layer     = 1 (Layer3)
protected = 1
bitrate   = 6 (48)
frequency = 0 (22050)
padding   = 1
private   = 0
mode      = 1
mode_ext  = 2
copyright = 0
original  = 0
emphasis  = 0
framesize = 314
next offs = 3762
------------------------------
offset    = 3762
version   = 2 (MPEG2)
layer     = 1 (Layer3)
protected = 1
bitrate   = 6 (48)
frequency = 0 (22050)
padding   = 0
private   = 0
mode      = 1
mode_ext  = 2
copyright = 0
original  = 0
emphasis  = 0
framesize = 313
next offs = 4075
------------------------------
offset    = 4075
version   = 2 (MPEG2)
layer     = 1 (Layer3)
protected = 1
bitrate   = 6 (48)
frequency = 0 (22050)
padding   = 1
private   = 0
mode      = 1
mode_ext  = 2
copyright = 0
original  = 0
emphasis  = 0
framesize = 314
next offs = 4389


Wie man sieht, wird direkt der erste Frame falsch berechnet. Die folgenden sind allerdings richtig, bis dann ab und zu wieder einer kommt, der nicht funktioniert.

Gruß Thomas
--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

07.08.2005, 22:15 Uhr

Holger
Posts: 8116
Nutzer
Hmm, jetzt fängt der nächste damit an :)

Ich kann in Deinem Posting irgendwie nicht die Formel entdecken, auf die Du Dich beziehst. Deshalb weiß ich auch nicht, was mir die geposteten Beispieldaten sagen sollen.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

07.08.2005, 22:34 Uhr

Holger
Posts: 8116
Nutzer
Ach so, jetzt verstehe ich. Du schreibst, wo Du einen header gefunden hast. Nun, wenn meine Quellen stimmen -und wer weiß das schon- sind Deine Berechnung ist noch viel falscher, als Du annimmst.
Die Formel lautet m.W. 72*Bitrate/Frequenz+Padding, d.h. in Deinem Falle sind es 156 ohne und 157 mit Padding. Du überspringst also in Deinem Beispiel jedes zweite frame und landest zufällig ab und zu auf den korrekten Frames, aber nur, wenn das padding-bit im übersprungenem frame nicht vom vorhergehenden abweicht.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

08.08.2005, 08:44 Uhr

thomas
Posts: 7717
Nutzer
Zitat:
Die Formel lautet m.W. 72*Bitrate/Frequenz+Padding

Cool, das wäre dann die vierte Version. Und siehe da, die ist auch bei meiner Sammlung dabei. Habe sie nur noch nicht ausprobiert. Vermutlich habe ich sie übersehen, weil sie in einem unscheinbaren Text-Dokument steht, alle anderen sind schöne bunte HTML-Seiten.

Danke.

Zitat:
Hmm, jetzt fängt der nächste damit an :)

Nicht wirklich. Ich hatte mich schon vor MaikG damit befaßt. Immerhin gibt es jetzt einen mp3-Datatype für OS4. Nur leider ist die Identifizierung von mp3-Dateien nicht so einfach. Ich habe jetzt allerdings doch eine Lösung gefunden, die funktioniert, ohne daß ich die mpeg-Header selbst auswerten muß. Wäre auch blöd, wenn die Erstellung des Descriptors schwieriger ist, als die Datatype-Klasse selbst.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > MPEG Audio Header Format [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.