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

15

Beim Lesen der Videoqualität stellte ich fest, dass dies von der Auflösung, den Bildern pro Sekunde und der Bitrate abhängt, die über die Größe des Videos entscheidet.

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

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

Nehmen wir also an, 1 Pixel entspricht 3 Bytes (24 Bit) Daten: Wir haben ein Video mit 2592000 × 24 Bit pro Sekunde (62208000 Bit), dh 62208 kBit (Dies klingt nicht richtig, möglicherweise ein Problem bei meiner Berechnung).

Aber wie kann es sich unterscheiden und wie unterscheidet es sich in der Qualität?

Vincent Mathew
quelle
Wenn Video eine Folge von Bitmap-Bildern wäre. Ihre Mathematik ist für PNG / JPG-Bilddateien bereits deaktiviert.
Daniel Beck
Die beiden vorhandenen Antworten betonen nicht das herausragende Merkmal der Videokomprimierung: Die meisten (wenn nicht alle) Videocodecs verwenden eine verlustbehaftete Komprimierung. Das heißt, einige Bildinformationen werden verworfen, wenn das Rohvideo komprimiert und codiert wird. Die Menge oder der Grad der verworfenen und verlorenen Bildinformationen / -details wird durch einen Qualitätsfaktor bestimmt . Bei der Audiokomprimierung gibt es sowohl verlustbehaftete als auch verlustfreie Komprimierungstechniken.
Sägemehl
@sawdust: Sie nicht? Ich dachte, mein dritter Absatz machte das ziemlich deutlich. Auf jeden Fall ist es manchmal nicht so gut, zu viele Informationen zu geben. Ich glaube daran, genug zu geben, damit der Fragesteller auf Wunsch mehr lernen kann. Ansonsten könnte ich sagen, dass Ihr Beitrag nicht betont, warum jemand einen Kompressor über einen anderen
Marty Fried
@sawdust Du hast Recht, dies wurde etwas im JPEG-Teil vergraben. Ich habe ein bisschen mehr Details hinzugefügt.
Slhck

Antworten:

21

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.

slhck
quelle
+1 - das habe ich gemeint, aber mein Komprimierungsalgorithmus hat ein bisschen ausgelassen. :)
Marty Fried
+1 Das ist alles was ich brauchte. Besonders die Bewegungskompensation. Danke
Vincent Mathew
6

Ich glaube, Ihre Mathematik ist tatsächlich korrekt, aber es steckt noch ein bisschen mehr dahinter. Komprimierung ist hier das fehlende Glied.

Sie haben die unkomprimierte Bitrate berechnet und den Grund für die Komprimierung ermittelt. Die Bitraten werden mit unkomprimiertem Video unglaublich groß. Sie komprimieren das Video an der Quelle und dekomprimieren es am Empfänger, und dann wird die Bitrate überschaubar. Sie benötigen lediglich einen ausreichend schnellen Dekomprimierer, bei dem es sich möglicherweise um Hardware oder Software handelt.

Das Problem wird also, wie viel Komprimierung toleriert werden kann - normalerweise ist es nicht verlustfrei, sodass Sie Informationen verlieren, aber sie versuchen, sie intelligent genug zu machen, um die weniger wichtigen Daten zu verlieren, die nicht so auffällig sind. Es ist normalerweise ziemlich einfach, bis es viel Bewegung gibt, dann wird es komplizierter.

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

Marty Fried
quelle
3
Außerdem ist die Videokomprimierung normalerweise nicht pixelbasiert, sondern funktioniert mit Pixelblöcken, sogenannten Makroblöcken .
Slhck