Wie unterscheidet sich die Bitrate bei gleicher Auflösung und Bildrate?

Wie unterscheidet sich die Bitrate bei gleicher Auflösung und Bildrate?

Beim Lesen über die Videoqualität habe ich festgestellt, dass diese von der Auflösung, den Bildern pro Sekunde und der Bitrate abhängt, die wiederum die Größe des Videos bestimmen.

Meine Frage ist, wie die Bitrate berechnet wird und wie sie abweichen kann.

Angenommen, ein Video hat eine Auflösung von 360 x 240. Es benötigt 86400 Pixel pro Frame. Die Framerate beträgt 30 Hz. Das Video benötigt also 86400 × 30 = 2592000 Pixel pro Sekunde.

Nehmen wir also an, 1 Pixel besteht aus 3 Bytes (24 Bits) an Daten: Wir haben 2592000 × 24 Bits pro Sekunde Video (62208000 Bits), das sind 62208 kBits (das klingt nicht richtig, vielleicht liegt ein Problem bei meiner Berechnung vor).

Doch worin liegen die Unterschiede und welchen Qualitätsunterschied macht es aus?

Antwort1

Was Sie berechnet haben, ist die Bitrate für ein rohes, unkomprimiertes Video. Normalerweise finden Sie diese nur in der Forschung oder in anderen Spezialanwendungen. Sogar Rundfunksender verwenden komprimierte Videos, allerdings mit einer viel höheren Bitrate als bei einem typischen YouTube-Video.

Die Videoqualität hängt also stark davon ab, wie das Video komprimiert wurde. Je stärker Sie es komprimieren, desto weniger Bits werden pro Frame benötigt. Je stärker Sie komprimieren, desto schlechter ist auch die Qualität. Manche Videos lassen sich viel einfacher komprimieren als andere – im Wesentlichen ist das der Grund, warum sie trotz gleicher Auflösung und Framerate eine niedrigere Bitrate haben.

Um zu verstehen, warum das so ist, müssen Sie sich der beiden Hauptprinzipien der Videokomprimierung bewusst sein. Diese werden als „räumliche“ und „zeitliche Redundanz“ bezeichnet.

Räumliche Redundanz

Räumliche Redundanz besteht in Bildern, die natürliche Inhalte zeigen. Das ist der GrundJPEGfunktioniert so gut – es komprimiert Bilddaten, weil Pixelblöcke zusammen kodiert werden können. Das sind zum Beispiel 8 × 8 Pixel. Diese nennt man „Makroblöcke“.

Moderne Video-Codecs machen das Gleiche: Sie verwenden grundsätzlich ähnliche Algorithmen wie JPEG, um ein Bild Block für Block zu komprimieren. Man speichert also nicht mehr Bits pro Pixel, sondern Bits pro Makroblock, weil man Pixel in größere Gruppen „zusammenfasst“. Durch das Zusammenfassen verwirft der Algorithmus auch Informationen, die für das menschliche Auge nicht sichtbar sind – hier kann man die Bitrate am meisten reduzieren. Das funktioniert so:Quantisierungdie Daten. Dadurch bleiben die Frequenzen erhalten, die besser wahrnehmbar sind, und die Frequenzen, die wir nicht sehen können, werden „weggeworfen“. Der Quantisierungsfaktor wird in den meisten Codecs als „QP“ ausgedrückt und ist der wichtigste Kontrollknopf für die Qualität.

Sie können jetzt sogar fortfahren undvorhersagenMakroblöcke aus Makroblöcken, die zuvor im selben Bild kodiert wurden. Dies nennt manIntra-Vorhersage. Beispielsweise wurde ein Teil einer grauen Wand bereits in der oberen linken Ecke des Frames kodiert, sodass wir diesen Makroblock im selben Frame erneut verwenden können, beispielsweise für den Makroblock direkt daneben. Wir speichern einfach den Unterschied zum vorherigen und sparen Daten. Auf diese Weise müssen wir nicht zwei Makroblöcke kodieren, die einander sehr ähnlich sind.

Warum ändert sich die Bitrate bei gleicher Bildgröße? Nun, manche Bilder lassen sich leichter kodieren als andere. Je höher die räumliche Aktivität, desto mehr müssen Sie tatsächlich kodieren. Glatte Texturen benötigen weniger Bits als detaillierte. Dasselbe gilt für die Intra-Vorhersage: Ein Frame einer grauen Wand ermöglicht es Ihnen, einen Makroblock zur Vorhersage aller anderen zu verwenden, während ein Frame von fließendem Wasser möglicherweise nicht so gut funktioniert.

Zeitliche Redundanz

Dies liegt daran, dass ein Frame, der auf einen anderen Frame folgt, wahrscheinlich sehr ähnlich zu seinem Vorgänger ist. Meistens ändert sich nur ein winziges bisschen, und es wäre nicht sinnvoll, es vollständig zu kodieren. Was Video-Encoder tun, ist nur dasUnterschiedzwischen zwei aufeinanderfolgenden Frames, genau wie sie es für Makroblöcke tun können.

Ein Beispiel aus dem Wikipedia-Artikel überBewegungskompensation, nehmen wir an, dies ist Ihr Originalrahmen:

Der Unterschied zum nächsten Frame ist dann nur noch dieser:

Der Encoder speichert nun nur noch dietatsächlichUnterschiede, nicht die Pixel-für-Pixel-Werte. Deshalb sind die für jedes Bild verwendeten Bits nicht jedes Mal gleich. Diese „Differenz“-Bilder hängen von einem vollständig codierten Bild ab, und deshalb gibt es für moderne Codecs mindestens zwei Arten von Bildern:

  • I-Frames(auch Keyframes genannt) — das sind die vollständig codierten
  • P-Rahmen— das sind diejenigen, die nur die Differenz speichern

Gelegentlich müssen Sie I-Frames in ein Video einfügen. Die tatsächliche Bitrate hängt auch von der Anzahl der verwendeten I-Frames ab. Außerdem gilt: Je größer der Bewegungsunterschied zwischen zwei aufeinanderfolgenden Frames ist, desto mehr muss der Encoder speichern. Ein Video, in dem sich „nichts“ bewegt, lässt sich leichter codieren als ein Sportvideo und benötigt weniger Bits pro Frame.

Antwort2

Ich glaube, Ihre Berechnung ist tatsächlich richtig, aber da steckt noch etwas mehr dahinter; die Komprimierung ist hier das fehlende Bindeglied.

Sie haben die unkomprimierte Bitrate berechnet und den Grund für die Komprimierung gefunden. Bei unkomprimiertem Video werden die Bitraten unmöglich groß. Daher wird das Video an der Quelle komprimiert und beim Empfänger dekomprimiert, und dann wird die Bitrate handhabbar. Sie benötigen lediglich einen ausreichend schnellen Dekomprimierer, der Hardware oder Software sein kann.

Die Frage ist also, wie viel Komprimierung toleriert werden kann. Normalerweise ist es nicht verlustfrei, Sie verlieren also Informationen, aber es wird versucht, es intelligent genug zu machen, um die weniger wichtigen Daten zu verlieren, die nicht so auffallen. Normalerweise ist es ziemlich einfach, bis viel Bewegung vorhanden ist, dann wird es komplizierter.

Bearbeiten: Habe vergessen hinzuzufügen, dass die Teile, die die Komprimierungsmethode implementieren, der Codec sind. Mir ist aufgefallen, dass Sie dies als Tag in Ihrem Beitrag verwendet haben.

verwandte Informationen