Das MP3-Dateiformat besteht aus Frames. Jeder Frame beginnt mit elf "1" -Bits und einigen Metadatenbytes, die die Bitrate steuern und einige andere Attribute definieren. Jeder Frame ist unabhängig und wurde so entwickelt, dass er Streaming unterstützt.
Frames können eine CRC haben - eine Fehlerprüfung. Es ist optional.
Das Betriebssystem wird wahrscheinlich das Lesen wiederholen, wenn es auf einer CD auf fehlerhafte Sektoren stößt (CD-Hardware hat einen eigenen Fehler beim Überprüfen von Mechansim, bevor der MP3-Encoder überhaupt etwas sieht). Angenommen, der Decoder arbeitet nicht mit einem Puffer, empfängt der Decoder während dieses Vorgangs keine neuen Daten und muss anhalten. Wenn das Betriebssystem die Daten nicht lesen kann, meldet es möglicherweise einen Fehler an das Betriebssystem, der schließlich an den Prozess gemeldet wird, auf dem sich der MP3-Encoder befindet. Kommt auf die Software an, was genau hier passiert.
Ein paar mögliche Dinge können passieren, wenn die Daten von der CD falsch gelesen werden und dennoch zum Decoder gelangen (dies würde wahrscheinlich nicht auf einem PC passieren, könnte aber in einer Auto-Stereoanlage oder einem anderen Nicht-PC-Gerät passieren):
Ein MP3-Decoder sucht nach diesen elf 1-Bits, um den Anfang eines Frames zu finden. Wenn er sie nicht findet, stoppt er wahrscheinlich die Decodierung bis zum nächsten Frame.
Wenn die Header-Daten fehlerhaft sind, wird der Frame möglicherweise mit der falschen Bitrate abgespielt, da das Byte angibt, welche Bitrate möglicherweise falsch ist.
Wenn das Header-CRC-Bit gesetzt ist und die CRC nicht übereinstimmt, wird der Decoder den Frame wahrscheinlich rauswerfen und nicht abspielen. Bei den meisten MP3-Dateien ist das CRC-Bit nicht gesetzt.
Wenn die Nutzdaten (Daten nach dem Header) falsch sind, versucht der MP3-Decoder, sie abzuspielen.
Die Aufgabe eines Decoders besteht darin, die komprimierten Daten zu übernehmen und unkomprimierte Daten zu generieren, um sie an eine "obere" Ebene zu übergeben. Diese obere Ebene verwendet tatsächlich die unkomprimierten Daten, um ein Audiogerät anzutreiben. Ich würde vermuten, dass die meisten Encoder / Audiotreiber-Setups einen Puffer mit einer konfigurierbaren Größe haben, in dem der MP3-Decoder einige Daten für den Audiotreiber aufbauen und das Wiederholen von Lesevorgängen ermöglichen kann.
Wenn der Decoder angehalten hat, weil er keine Daten empfängt, kann die obere Ebene, die das Audio tatsächlich steuert, einen der folgenden Schritte ausführen:
- Die obere Ebene gibt Stille aus. Sie würden eine Unterbrechung im Audio hören.
- Der Decoder füllt keine Daten mehr in einen Audiopuffer, aber die obere Ebene spielt weiter, was sich dort befindet. Audiopuffer sind normalerweise "kreisförmig", was bedeutet, dass sie nicht auf Null gesetzt, sondern ständig mit neuen Daten überschrieben werden. Sie hören einen Sprung, der Teil der vorherigen Audiowiedergabe ist.
- Die obere Ebene ist schlau und versucht zu interpolieren, was "da" sein sollte. Ich denke nicht, dass dies sehr häufig ist.
Wenn der Decoder fehlerhafte Daten ausgibt, hören Sie statische Aufladungen oder Knallgeräusche im Audio.
Referenz .