Ausserdem muss das Stream-file sowieso beim Liedanfang (FF FD A0) geschnitten werden.
Klar, allerdings darfst Du nicht wild nach dieser Bytefolge suchen, da diese in dem von dir geposteten Stück bereits über 30 Mal vorkommt, aber eigentlich kein neues Lied anfängt. Diese Bytefolge muss daher immer am Anfang eines Frames stehen, also direkt nach dem PES Header.
Weißt Du auch was FF FD A0 bedeutet?
In diesen Bytes steckt
1111 1111 1111 - das Syncword
1 - für MPEG Audio
10 - für Layer II
1 - dass keine Daten öfters vorkommen
1010 - für 192 kbit/s bei Layer II
00 - für 44,1 kHz
0 - für das Padding-Bit
0 - für das Private-Bit
Dir sollte gleich auffallen, dass die Songs mit 44,1 kHz (00) ausgestrahlt werden, wo fast alle anderen Sender 48 kHz (01) verwenden.
Um diese Bytefolge zu finden muss man also erst mal nach einem PES Header suchen. Der erste in deinem Beispiel sieht folgendermaßen aus:
00 00 01 c0 27 1f 82 80 0c 2d b9 81 cb af ff ff ff ff ff ff ff
dabei gibt 00 00 01 c0 den Start des Headers an. Man muss aber aufpassen, dass lt. Norm der Bereich von 1100 0000 bis 1101 1111 für Audio reserviert wurde. So kann ein Header also im Bereich von C0 bis DF liegen.
Danach kommt in diesem Fall 27 1f, was die Packetlänge angibt. Dabei wird bereits an dem auf 27 1f folgenden Byte gezählt. Diese Paketlänge ist sehr wichtig, da man das Ende eines Songs an dieser Länge erkennen kann, da der letzte Frame eines Titels bei MCE immer kürzer als der vorhergehende ist, wobei der darauffolgende mit FF FD A0 beginnen muss. Es können nämlich auch mal längere Frames während eines Liedes vorkommen.
Wichtig ist dann noch 0c, denn dies gibt an, wieviel darauffolgende Bytes noch zum PES Header gehören. Hier ein Beispiel:
00 00 01 c0 27 1f 82 80 0c 2d a6 a9 ae af ff ff ff ff ff ff ff
00 00 01 c0 27 1f 82 80 0f 2d a6 ab d4 8f ff ff ff ff ff ff ff ff ff ff
00 00 01 c0 27 1f 82 80 0c 2d a6 ad e8 13 ff ff ff ff ff ff ff
Um MP2 zu erhalten muss man also nur die Framelänge auslesen, danach an Hand des einzelnen Bytes (c0, cf...) die Restlänge des Headers ermitteln um den Start der ES Daten zu finden.
Cu leth
Cu leth