2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Hinweis: Wir beziehen uns auf die Golden-Circle-Lernmethode (Was ist die Golden-Circle-Regel? -> Modell-Golden-Circle-Regel, dieser Artikel verwendet: Warum-Was), um die Audio-H264-Videokodierung zu lernen. Diese Artikelreihe konzentriert sich auf das Verständnis des Wissenssystems und der praktischen Methoden der Videokodierung. Der theoretische Aspekt erklärt mehr über den Ursprung von Konzepten in Audio und Video und den Zusammenhang zwischen verschiedenen Konzepten. Wissen Sie, wie es ist, wissen Sie, warum es so ist. Gleichzeitig wird mehr Wert auf den Aufbau von Wissenssystemen gelegt.
In diesem Artikel sprechen wir hauptsächlich über den Prozess der H.264-Datenkomprimierung und verwandte Konzepte. Die H.264-Datenkomprimierung hat nur einen Zweck: Komprimieren, Komprimieren und erneutes Komprimieren, um die Größe der Videodaten zu reduzieren und gleichzeitig die Bildqualität so weit wie möglich sicherzustellen. Bevor wir also die H.264-Datenkomprimierung lernen, müssen wir zunächst Folgendes verstehen: Obwohl an diesem Prozess viele Konzepte und Methoden beteiligt sind, dienen alle Methoden und Prozesse diesem Zweck: Komprimierung.
Der Datenkomprimierungsprozess von H.264 lässt sich hauptsächlich in den folgenden Schlüsselschritten zusammenfassen: Makroblockteilung und Unterblockteilung -> Frame-Gruppierung -> Frame-Vorhersage -> ganzzahlige diskrete Kosinustransformation (DCT) -> CABAC-Komprimierung. Die spezifischen Erweiterungsanweisungen lauten wie folgt.
Makroblock: Es versteht sich, dass der Encoder beim Senden des Videobilds an den Puffer des H264-Encoders Makroblöcke in jedes Bild unterteilt. Standardmäßig verwendet die H264-Codierung einen Bereich von 16 x 16 Pixeln als Makroblock (H265 verwendet einen Bereich von 64 x 64 Pixeln). Der Effekt der Aufteilung eines Videobilds in Makroblöcke ist wie folgt:
Gleichzeitig können wir im Bild oben den 16 x 16 Pixel großen Makroblock tatsächlich in kleinere Unterblöcke unterteilen. Die Größe des Unterblocks kann 8X16、16X8、8X8、4X8、8X4、4X4 betragen, was sehr flexibel ist. Der Zweck der erneuten Aufteilung in Unterblöcke besteht darin, diese Daten mit sehr kleinen Daten aufzuzeichnen. Nachdem die Makroblöcke aufgeteilt wurden, können alle Bilder im H264-Encoder-Cache gruppiert werden.
Durch die Aufteilung in Makroblöcke und Unterblöcke kann die Videocodierung Videoinhalte genauer analysieren und verarbeiten und eine effizientere Datenkomprimierung erreichen. Videobilder werden in Makroblöcke der Größe 16 x 16 Pixel unterteilt. Diese Makroblöcke können weiter in kleinere Blöcke wie 8 x 8, 8 x 4, 4 x 8 usw. unterteilt werden, um der Komplexität des Bildinhalts Rechnung zu tragen.
Die Frame-Gruppierung (GOP-Struktur) wird vor der Intra-Vorhersage und der Inter-Vorhersage definiert. Beim Videokodierungsprozess ist die Einstellung der Bildgruppierung einer der ersten Schritte, der die Organisation und Kodierungsreihenfolge von Videobildern bestimmt. Der Hauptzweck der Frame-Gruppierung besteht darin, die Datenredundanz zu reduzieren. Die Redundanz von Videodaten wird hauptsächlich in zwei Kategorien unterteilt:
Schritte zur Ausführung der H264-Frame-Gruppierung:
Wenn die Gruppierung abgeschlossen ist, beginnt das Problem der Bildvorhersagekomprimierung gelöst zu werden.
Dieser Teil umfasst hauptsächlich die Intra-Frame-Vorhersage und die Inter-Frame-Vorhersage. Die Intra-Frame-Vorhersage besteht darin, statische Bildrahmen zu komprimieren, den Pixelwert jedes Makroblocks über 9 verschiedene Modi vorherzusagen und dann den Restwert mit dem Originalbild zu berechnen. Interframe-Vorhersage (Bewegungsschätzung und Bewegungskompensation): Finden Sie für P-Frames und B-Frames den Bewegungsvektor zwischen dem vorherigen Frame oder zwei Frames durch Bewegungsschätzung, führen Sie dann eine Bewegungskompensationsvorhersage durch, generieren Sie ein vorhergesagtes Bild und berechnen Sie den Restwert daraus aktuellen Frame.
Hinweis: Die Reihenfolge der Intra-Vorhersage und der Inter-Vorhersage hängt von der Art des codierten Rahmens und der Codierungsstrategie ab. In einer echten Video-Encoder-Implementierung sind diese Schritte Teil des Codierungsprozesses und werden automatisch vom Encoder ausgeführt. Es muss nicht derjenige sein, der sich zuerst darum kümmert.
Komprimierung der Intra-Frame-Vorhersage: Löst das Problem der räumlichen Datenredundanz. Luftraumredundante Daten beziehen sich auf Farbe, Helligkeit usw., bei denen es sich hauptsächlich um Informationen handelt, die für das menschliche Auge unempfindlich sind. Die Codierung wird durch Löschen komprimiert.Das bei der Intra-Frame-Vorhersage verwendete Prinzip besteht darin, dass das menschliche Auge ein gewisses Maß an Bilderkennung besitzt. Es reagiert sehr empfindlich auf niederfrequente Helligkeit und weniger empfindlich auf hochfrequente Helligkeit.(Es kann als Makroblockgröße von 16 x 16 verstanden werden. In H264 werden andere Daten über die oberen 16 Pixel und die 16 Pixel ganz links vorhergesagt, sodass die Pixeldarstellungsinformationen, die ursprünglich 16 * 16 = 256 erforderten, in 16+ konvertiert werden können 16-1 =31 Pixel zur Darstellung von Informationen)。
Komprimierung der Interframe-Vorhersage (Bewegungsschätzung und -kompensation): Löst das Problem der Datenredundanz im Zeitbereich. Das Video enthält mehrere Bilder, die linear in chronologischer Reihenfolge angeordnet sind. Die Korrelation zwischen den Bildern ist sehr stark, sodass viele Daten zwischen den Bildern gelöscht werden können.Nach der Komprimierung wird es in drei Typen unterteilt: I-Frame, P-Frame und B-Frame.(Erklärung: Prinzip der Bewegungsschätzung und -kompensation: Der H264-Encoder entnimmt zunächst nacheinander zwei Bilder von Videodaten aus dem Puffer-Header und führt dann einen Makroblock-Scan durch. Wenn festgestellt wird, dass sich in einem der Bilder ein Objekt befindet, wird es angezeigt Wird zu diesem Zeitpunkt nach der Position in der Nähe gesucht (im Suchfenster), kann der Bewegungsvektor des Objekts berechnet werden. Das Bild unten zeigt die Position der Billardkugel nach der Suche.。
Für P-Bilder und B-Bilder wird die Bewegungsschätzung verwendet, um den Bewegungsvektor zwischen dem vorherigen Bild oder zwei Bildern zu finden. Anschließend wird eine Bewegungskompensationsvorhersage durchgeführt, um ein vorhergesagtes Bild zu generieren, und der Rest mit dem aktuellen Bild wird berechnet.
Dieser Schritt führt hauptsächlich eine DCT-Transformation des Vorhersagerests durch, wandelt die räumliche Korrelation in irrelevante Daten im Frequenzbereich um und quantisiert sie anschließend. DCT wird hauptsächlich zur Daten- oder Bildkomprimierung verwendet, wobei räumliche Korrelation in irrelevante Daten im Frequenzbereich umgewandelt und anschließend quantisiert wird.(Erklärung: Durch die DCT-Transformation können wichtigere Informationen des Bildes zusammengeführt werden, und unwichtige Frequenzbereichsbereiche und Koeffizienten können direkt beschnitten werden.)。
Zusammenfassung: Die Reihenfolge der Frame-Datenkomprimierung besteht darin, zuerst eine Inter-Frame- und Intra-Frame-Komprimierung durchzuführen und dann eine DCT-Transformation für die Restdaten durchzuführen, um die Korrelation der Daten zu entfernen und die Daten weiter zu komprimieren. Wie folgt:
CABAC-Komprimierung ist eine verlustfreie Komprimierungstechnologie und eine Methode zur Entropiekodierung. Wenn CABAC komprimiert und kodiert wird, werden Hochfrequenzdaten als kurze Codes und Niederfrequenzdaten als lange Codes definiert. Diese Methode ist effizienter als die VLC-Methode. Die Entropiekodierungsmethode CABAC (Context-Adaptive Binary Arithmetic Coding) wird verwendet, um die quantisierten Koeffizienten weiter zu komprimieren und so die Komprimierungseffizienz zu verbessern. Hier werden die in den vorherigen vier Schritten verarbeiteten Daten mithilfe des Kodierungsalgorithmus in den endgültigen Codestrom kodiert. Die endgültigen komprimierten Frames sind unterteilt in: I-Frames, P-Frames und B-Frames. Nachdem die verlustfreie Komprimierungsmethode CABAC ausgeführt wurde, wird der Videocode-Stream erhalten.
Räumliche Datenredundanz und zeitliche Datenredundanz sind zwei Grundkonzepte der Videokomprimierung. Sie beschreiben wiederholte Informationen innerhalb bzw. zwischen Videobildern.
Interpretation der räumlichen Redundanz:
Interpretation der zeitlichen Redundanz:
Bei der H.264-Videokomprimierung beziehen sich Restdaten auf die Differenz zwischen dem ursprünglichen Videobild und dem vorhergesagten Bild. Wenn Sie die Restdaten besser verstehen möchten, müssen Sie gleichzeitig die folgenden Konzepte verstehen, wie unten gezeigt:
vorhergesagter Rahmen : Während des Videokodierungsprozesses werden Intra-Vorhersage (Intra-Vorhersage) oder Inter-Vorhersage (Inter-Vorhersage) verwendet, um vorhergesagte Frames zu generieren. Die Intra-Vorhersage basiert auf Pixelinformationen des aktuellen Frames, während die Inter-Vorhersage auf Bewegungskompensationsinformationen vorheriger oder nachfolgender Frames basiert.
Originalrahmen: Bezieht sich auf die Originalbilder, die tatsächlich in der Videosequenz aufgenommen wurden.
Restberechnung : Restdaten werden berechnet, indem der vorhergesagte Frame vom ursprünglichen Frame subtrahiert wird. Restdaten stellen die Differenz zwischen dem vorhergesagten Frame und dem ursprünglichen Frame dar.
Auf der Grundlage der oben genannten Konzepte können wir die Eigenschaften von Restdaten besser verstehen:
Restdaten weisen normalerweise eine hohe räumliche Zufälligkeit auf, da der Vorhersagerahmen die meisten redundanten Informationen entfernt hat. Diese Zufälligkeit macht die Restdaten für eine weitere Komprimierung durch Transformation und Quantisierung geeignet.
Nachdem die Restdaten durch Integer Discrete Cosine Transform (IDCT) und Quantisierung verarbeitet wurden, kann die Datenmenge erheblich reduziert werden. Die Transformation wandelt die zweidimensionalen räumlichen Informationen des Residuums in Frequenzinformationen um, während die Quantisierung die Genauigkeit dieser Koeffizienten verringert und Details entfernt, die für das menschliche Auge nicht wahrnehmbar sind.
Der Zweck der Codierung von Restdaten besteht darin, die Bitrate der Videodaten weiter zu reduzieren und gleichzeitig die Bildqualität so weit wie möglich beizubehalten. Gleichzeitig ist eine effektive Komprimierung der Restdaten von entscheidender Bedeutung für die Effizienz der H.264-Kodierung, da sie sich direkt auf die Qualität des kodierten Videos und die erforderliche Speicher- oder Übertragungsbandbreite auswirkt.
Entropiekodierung ist eine verlustfreie Datenkomprimierungstechnik, die auf dem Konzept der Informationsentropie basiert und darauf abzielt, Daten mit möglichst wenigen Bits darzustellen. Die Kernidee der Entropiekodierung besteht darin, Symbolen, die mit größerer Wahrscheinlichkeit auftreten, weniger Bits zuzuweisen und Symbolen, die weniger häufig vorkommen, mehr Bits zuzuweisen. Auf diese Weise wird der benötigte Speicherplatz bzw. die Übertragungsbandbreite reduziert, da die durchschnittliche Bitrate des gesamten Datensatzes reduziert wird.
Entropiekodierung wird häufig für Text und bestimmte Arten der Datenkomprimierung verwendet und kann die Komprimierungseffizienz erheblich verbessern, insbesondere wenn die Daten eine deutlich ungleichmäßige Wahrscheinlichkeitsverteilung aufweisen. Bei der Videokomprimierungscodierung umfassen die Entropiecodierungsmethoden, die am engsten mit der Videokomprimierung zusammenhängen, hauptsächlich die folgenden:
Bei der Videokomprimierung ist die Entropiekodierung der letzte Kodierungsschritt, der zur Kodierung der Restdaten nach der Intra- und Inter-Vorhersage verwendet wird. Restdaten sind die Differenz zwischen den Originaldaten und den vorhergesagten Daten und weisen normalerweise weniger Energie und eine ungleichmäßigere Wahrscheinlichkeitsverteilung auf. Durch Entropiecodierung kann die Bitrate dieser Restdaten weiter reduziert werden, wodurch der Zweck der Komprimierung von Videodaten erreicht wird.