Was Sie berechnet haben, ist die Bitrate für ein unkomprimiertes Rohvideo. Diese finden Sie normalerweise nur in der Forschung oder in anderen speziellen Anwendungen. Sogar Sender verwenden komprimiertes Video, allerdings mit einer viel höheren Bitrate als ein typisches YouTube-Video.
Die Videoqualität hat also viel damit zu tun, wie das Video komprimiert wurde. Je mehr Sie es komprimieren, desto weniger Bits werden pro Frame benötigt. Je mehr Sie komprimieren, desto schlechter ist die Qualität. Einige Videos lassen sich jetzt viel einfacher komprimieren als andere. Im Wesentlichen haben sie deshalb eine niedrigere Bitrate, obwohl sie dieselbe Auflösung und Framerate haben.
Um zu verstehen, warum dies so ist, müssen Sie die beiden Hauptprinzipien der Videokomprimierung kennen. Diese werden als "räumliche" und "zeitliche Redundanz" bezeichnet.
Räumliche Redundanz
In Bildern, die natürlichen Inhalt zeigen, besteht räumliche Redundanz. Dies ist der Grund, warum JPEG so gut funktioniert - es komprimiert Bilddaten, weil Pixelblöcke zusammen codiert werden können. Dies sind beispielsweise 8 × 8 Pixel. Diese werden "Makroblöcke" genannt.
Moderne Video-Codecs machen dasselbe: Sie verwenden grundsätzlich ähnliche Algorithmen wie JPEG, um ein Bild Block für Block zu komprimieren. Sie speichern also keine Bits mehr pro Pixel, sondern Bits pro Makroblock, weil Sie Pixel in größeren Gruppen "zusammenfassen". Durch die Zusammenfassung verwirft der Algorithmus auch Informationen, die für das menschliche Auge nicht sichtbar sind. Hier können Sie den größten Teil der Bitrate reduzieren. Es funktioniert durch Quantisierung der Daten. Dadurch bleiben wahrnehmbare Frequenzen erhalten und diejenigen, die wir nicht sehen können, werden "weggeworfen". Der Quantisierungsfaktor wird in den meisten Codecs als "QP" ausgedrückt und ist der Hauptregler für die Qualität.
Sie können jetzt sogar Makroblöcke aus Makroblöcken vorhersagen , die zuvor im selben Bild codiert wurden. Dies wird als Intra-Vorhersage bezeichnet . Beispielsweise wurde ein Teil einer grauen Wand bereits in der oberen linken Ecke des Rahmens codiert, sodass wir diesen Makroblock wieder im selben Rahmen verwenden können, beispielsweise für den Makroblock direkt daneben. Wir werden nur den Unterschied zum vorherigen speichern und Daten speichern. Auf diese Weise müssen wir nicht zwei Makroblöcke codieren, die einander sehr ähnlich sind.
Warum ändert sich die Bitrate bei gleicher Bildgröße? Nun, einige Bilder sind einfacher zu codieren als andere. Je höher die räumliche Aktivität, desto mehr müssen Sie tatsächlich codieren. Glatte Texturen nehmen weniger Bits ein als detaillierte. Gleiches gilt für die Intra-Vorhersage: Mit einem Rahmen einer grauen Wand können Sie einen Makroblock verwenden, um alle anderen vorherzusagen, während ein Rahmen mit fließendem Wasser möglicherweise nicht so gut funktioniert.
Zeitliche Redundanz
Dies liegt daran, dass ein Frame, der einem anderen Frame folgt, wahrscheinlich seinem Vorgänger sehr ähnlich ist. Meistens ändert sich nur ein kleines bisschen, und es wäre nicht sinnvoll, es vollständig zu codieren. Video-Encoder codieren nur den Unterschied zwischen zwei aufeinander folgenden Frames, genau wie sie es für Makroblöcke tun können.
Nehmen wir ein Beispiel aus dem Wikipedia-Artikel zur Bewegungskompensation. Nehmen wir an, dies ist Ihr ursprünglicher Rahmen:
Dann ist der Unterschied zum nächsten Frame genau der folgende:
Der Encoder speichert jetzt nur die tatsächlichen Unterschiede, nicht die pixelweisen Werte. Aus diesem Grund sind die für jeden Frame verwendeten Bits nicht jedes Mal gleich. Diese "Differenz" -Frames hängen von einem vollständig codierten Frame ab. Aus diesem Grund gibt es für moderne Codecs mindestens zwei Arten von Frames:
- I-Frames (auch bekannt als Keyframes) - dies sind die vollständig codierten
- P-Frames - das sind diejenigen, die nur den Unterschied speichern
Sie müssen gelegentlich I-Frames in ein Video einfügen. Die tatsächliche Bitrate hängt auch von der Anzahl der verwendeten I-Frames ab. Darüber hinaus muss der Codierer umso mehr speichern, je mehr Bewegungsunterschiede zwischen zwei nachfolgenden Rahmen bestehen. Ein Video, in dem sich "nichts" bewegt, ist einfacher zu codieren als ein Sportvideo und benötigt weniger Bits pro Frame.