Hallo,
Ich bin dabei eine Klasse zu basteln, die die Bitrate und die Länge und eines MP3s bestimmen kann.
Allerdings scheint das nicht einwandfrei funktionieren zu wollen.
Die Vorgehensweise:
Der komplette Inhalt der Datei wird als String eingelesen.
Danach per
explode(chr(255),$string);
geteilt, weil ein Frame ja mit "11111111111" Bits beginnen muss.
Danach überprüfe ich mit einer Schleife wirklich jedes Frame, indem ich die MPEG Audio version und die Layer description bestimme und dadurch dann die Bitrate.
Die Bitrate eines MP3s, welches mit lame konstant mit 128kbit/s enkodiert wurde, hat jedoch folgende "Bitrate-Verteilung":
Also die meisten Frames sind wirklich mit 128 kbits/s enkodiert, aber es gibt auch viele andere Bitraten.
Jetzt meine Frage: ist das normal? Eigentlich nicht, oder? Weil ich ja konstant kodiert habe. Also mit dem Befehl:
// EDIT:
Das gleiche habe ich auch mit 32 kbit und 256 kbit enkodierten MP3s ausprobiert und das Ergebnis war immer ähnlich. Also mein Code scheint zumindest halbwegs richtig zu sein
Ich bin dabei eine Klasse zu basteln, die die Bitrate und die Länge und eines MP3s bestimmen kann.
Allerdings scheint das nicht einwandfrei funktionieren zu wollen.
Die Vorgehensweise:
Der komplette Inhalt der Datei wird als String eingelesen.
Danach per
explode(chr(255),$string);
geteilt, weil ein Frame ja mit "11111111111" Bits beginnen muss.
Danach überprüfe ich mit einer Schleife wirklich jedes Frame, indem ich die MPEG Audio version und die Layer description bestimme und dadurch dann die Bitrate.
Die Bitrate eines MP3s, welches mit lame konstant mit 128kbit/s enkodiert wurde, hat jedoch folgende "Bitrate-Verteilung":
Array
(
[128] => 621
[bad] => 30
[32] => 34
[256] => 24
[56] => 24
[free] => 63
[160] => 26
[416] => 5
[224] => 21
[320] => 24
[112] => 30
[48] => 19
[80] => 24
[96] => 29
[288] => 8
[384] => 12
[40] => 15
[144] => 8
[64] => 19
[8] => 7
[352] => 7
[192] => 13
[24] => 7
[16] => 9
[448] => 4
)
(
[128] => 621
[bad] => 30
[32] => 34
[256] => 24
[56] => 24
[free] => 63
[160] => 26
[416] => 5
[224] => 21
[320] => 24
[112] => 30
[48] => 19
[80] => 24
[96] => 29
[288] => 8
[384] => 12
[40] => 15
[144] => 8
[64] => 19
[8] => 7
[352] => 7
[192] => 13
[24] => 7
[16] => 9
[448] => 4
)
Jetzt meine Frage: ist das normal? Eigentlich nicht, oder? Weil ich ja konstant kodiert habe. Also mit dem Befehl:
Code:
# C:\Programme\lame\lame.exe -b 128 Y:\supercops.wav Y:\supercops_128bit.mp3
Das gleiche habe ich auch mit 32 kbit und 256 kbit enkodierten MP3s ausprobiert und das Ergebnis war immer ähnlich. Also mein Code scheint zumindest halbwegs richtig zu sein
Kommentar