
Sprechen Sie über einige grundlegende Unterschiede zwischen VBR und CBR in MP3-Dateien, Teil 3

Bei VBR-codierten MP3-Dateien ist die Datengröße jedes Frames willkürlich, da die Bitrate jedes Frames nicht festgelegt ist.

Offensichtlich ist die Größe der pro Sekunde reproduzierten Daten unterschiedlich. Auf diese Weise kann die Dauer des gesamten Audios nicht mit der obigen Formel berechnet werden und es werden andere Datenfelder benötigt, was einer der Nachteile der VBR-Technologie ist: Es ist relativ schwierig und kompliziert, die Dauer des Audios zu berechnen.
Es gibt noch einen weiteren Nachteil der VBR-Technologie. Beim Abspielen einer Audiodatei gibt es zwangsläufig eine Operation, um zu der Position der spezifizierten Zeit zum Abspielen zu springen (dh die sogenannte Suchoperation). Zu diesem Zeitpunkt ist es erforderlich, die Zeitposition des Ziels in die Position der Datei umzuwandeln. Springen Sie dann zu diesem Dateipositionsversatz, um ihn zu lesen und zu dekodieren. Wenn es sich um einen Download-and-Play-Netzwerkwiedergabemodus handelt, müssen Sie während des Suchvorgangs zuerst die Position der Datei berechnen. Springen Sie zu dieser Position und laden Sie einen Absatz herunter, bevor Sie weiterspielen. . Für die CBR-Codierung ist die Konvertierung in Dateipositions-Offset ebenfalls sehr einfach, indem die folgende Formel verwendet wird:
Dateiposition (Byte) = Zielzeitposition ( s ) * Bitrate (kbps) * 1000/8 + id3v2-Feldgröße (falls vorhanden)
Aber für die VBR-Codierung ist es offensichtlich unmöglich, diese Formel zum Konvertieren der Dateiposition zu verwenden. Der Grund ist ebenfalls sehr einfach: Die Bitrate jedes Frames ist nicht festgelegt und die Datenlänge pro Sekunde ist nicht durchschnittlich. Daher werden, genau wie bei der Berechnung der Dauer, andere Datenfelder benötigt.
Die Methode zum Berechnen der Audiodauer und Implementieren des Suchvorgangs mithilfe der VBR-Codierung
Um die beiden oben genannten Probleme zu lösen, fügt die VBR-Codierung einige Datenfelder hinzu. Gegenwärtig gibt es hauptsächlich zwei Arten von VBR-Codierungstechnologien, eine ist die von der Firma Xing vorgeschlagene Xing-Spezifikation und die andere ist die VBRI-Spezifikation des Fraunhofer-Codierers. Dieser Artikel stellt nur dar, wie die Xing-Spezifikation die Berechnung der Audiodauer und die Implementierung der Suchoperation löst.
Der Hauptinhalt der Xing-Spezifikation ist der Xing-Header, was bedeutet, dass der erste Audioframe am Anfang des VBR-codierten mp3 nicht zum Speichern bestimmter Audiodaten, sondern zum Speichern zusätzlicher Audioinformationen verwendet wird. Diese Informationen sind mit den vier Zeichen „Xing“ als Feldanfang gekennzeichnet (einige Dateien verwenden auch die vier Zeichen „Info“ als Anfang des Xing-Headers).
Die Position des Xing-Headers im ersten Audioframe ist nach dem standardmäßigen 4-Byte-MP3-Audioframe-Header. Zwischen dem Tabellenkopf und dem Xing-Header befindet sich ein Leerteil mit reinem Dateninhalt 0. Dieses Leerzeichen gibt die Länge des Abschnitts an. Nachdem der Decoder den Frame-Header des ersten Audioframes geparst hat, überspringt er den leeren Teil der angegebenen Länge und beurteilt dann, ob der nächste Inhalt die vier Zeichen von „Xing“ oder „Info“ sind, um das Audio zu beurteilen, wenn die VBR-Codierung .
Die Länge des Leerteils wird durch die MPEG-Version und die Anzahl der Kanäle bestimmt, wie in der folgenden Tabelle gezeigt (Einheit ist Byte):
Nicht-Mono-MPEG-Version für infektiöse Mononukleose
MPEG 1 18 32 (am häufigsten)
MPEG29 18
Die folgende Abbildung ist ein Beispiel für die Feldstruktur des ersten VBR-codierten mp3-Datenrahmens:
Die Feldstruktur und der Inhalt der im Xing-Header gespeicherten Informationen sind wie folgt:
Standort (ab Markierung ‘Xing’) Längenrichtung Beispiel
0 4 VBR-Header-Tag, 4-Byte-ASCII-Zeichen, Inhalt ist ‘Xing’ oder ‘Info’ ‘Xing’
0 4 Ein Flag, das den spezifischen Inhalt des VBR-Headers angibt, die Kombination ist ein logisches ODER
verpflichtend
. existiert, ausgenommen Tags;
0x0004 – TOC-Index-Speicherbereich auf vorhanden gesetzt;
0x0008 – Qualitätsanzeige-Speicherbereich auf 0x0007 gesetzt (was bedeutet, dass die Gesamtzahl der Frames, die Dateilänge und der TOC-Speicherbereich gültig sind)
8 4 Speichert den Big-Endian-Wert der Gesamtzahl der Frames 7344
8 oder 12 4 Speichert den Big-Endian-Wert der Dateilänge in Bytes 45000
8, 12 oder 16 100 Die TOC-Tabelle, die ein Byte-Array mit einer Länge von 100 ist, ist ein Positionsindex, der für die schnelle Adressierung in der Datei verwendet wird und hauptsächlich verwendet wird, um die Implementierung der Suchoperation aufzulösen.

/CBR-vs-VBR-069b3b5e6d554d53841e7e525092d25b.jpg)
/CBR-vs-VBR-069b3b5e6d554d53841e7e525092d25b.jpg)