EINE STUFE EINER KETTE — WAS ANKOMMT, WAS HERAUSGEHT, WAS DANACH BRICHT
Wo diese Stufe in der Encoding-Pipeline sitzt
Ein Video-Encoder ist kein einzelner Algorithmus, sondern acht Stufen in fester Reihenfolge — und die Reihenfolge ist nicht beliebig: Jede Stufe existiert, weil die vorherige ihre Arbeit erst möglich gemacht hat. Dieses Werkzeug modelliert eine davon. Die Kette unten verlinkt die anderen sieben.
GOP-Struktur-Visualizer — entscheidet, welche Bilder eigenständig und welche als Differenz codiert werden
- Was ankommt
- Eine Folge abgetasteter Bilder, noch keines davon codiert.
- Was herausgeht
- Eine Zuordnung: I-Frames eigenständig codiert, P- und B-Frames gegen Referenzbilder.
- Was die nächste Stufe voraussetzt
- Bewegungsschätzung läuft ausschließlich auf P- und B-Frames. Ein I-Frame überspringt sie vollständig.
- Was hier schiefgeht
- Diese Stufe entscheidet, ob die nächste für ein Bild überhaupt läuft — sie steuert Stufe 04 also, statt ihr nur voranzugehen. Große Abstände zwischen I-Frames komprimieren deutlich besser und verschlechtern das Spulen, weil ein Player vom letzten I-Frame vorwärts decodieren muss, um an eine beliebige Stelle zu kommen.
Aufgabe vollständig gelöst
-
Frame-Mix und durchschnittliche Framegröße für 48 Frames bei 24 fps 6 Schritte
Eine Group of Pictures im Blu-ray-Stil: 48 Frames, 3 aufeinanderfolgende B-Frames zwischen Referenzen, abgespielt mit 24 fps. Nimm an, dass ein I-Frame 100 relative Einheiten kostet, ein P-Frame 12 und ein B-Frame 6. Bestimme die Frame-Zusammensetzung und die durchschnittliche Frame-Größe und ermittle dann, wie viel Kompression eine längere GOP noch bringen könnte.
-
Ein I-Frame eröffnet die Gruppe, womit 47 Plätze verbleiben. Diese Plätze wiederholen eine 4-Frame-Einheit — 3 B-Frames und den P-Frame, der sie verankert — und 47 ist kein Vielfaches von 4. 47 = 11 × 4 + 3, also 11 vollständige Einheiten und ein Rest von 3 frei hängenden B-Frames.
-
Das ergibt 11 P-Frames und 33 + 3 = 36 B-Frames. Überprüfung: 1 + 11 + 36 = 48.
-
Gewichte jeden Typ mit seinen Kosten. 100 + 132 + 216 = 448 Einheiten für die gesamte Gruppe und 448 / 48 = 9,3 pro Frame. Ein All-Intra-Stream zahlt 100 für jeden Frame, sodass diese Struktur bei denselben 48 Bildern um das 10,7-Fache kleiner ist.
-
Die Rechnung dafür zeigt sich in der Latenz. Man kann das Dekodieren nicht in der Mitte einer Gruppe beginnen — jeder P- und B-Frame ist relativ zu etwas anderem definiert —, sodass ein Suchlauf auf dem I-Frame landet und man von dort aus vorwärts dekodiert. Der schlimmste Fall sind die vollen 48 Frames, was bei 24 fps 2 s entspricht.
-
Finde nun die Untergrenze. Jede sich wiederholende Einheit kostet 3 × 6 + 12 = 30 Einheiten für 4 Frames, also 7,5 pro Frame, und das Verlängern der GOP tut nichts weiter als weitere dieser Einheiten hinzuzufügen. Zieht man diese Rate von der Gruppe ab, bleiben 448 - 7,5 × 48 = 88 Einheiten übrig.
-
Diese 88 entsprechen einer einzigen Zahl: 100 - 12, dem Aufpreis des I-Frames gegenüber dem P-Frame, an dessen Stelle er steht. Dieser Aufpreis wächst nicht mit der Gruppe, er beträgt also unabhängig von der Länge stets 88, und der Durchschnitt ist S̄ = 7,5 + 88/N. Teste es bei doppelter Länge: N = 96 ergibt 7,5 + 88/96 = 8,4 Einheiten pro Frame.
Antwort
9,3 Einheiten pro Frame, gegenüber einer Untergrenze von 7,5, die keine GOP-Länge unterschreiten kann. Die beiden Seiten dieses Kompromisses skalieren in entgegengesetzte Richtungen, und keine davon ist so linear, wie sie aussieht: Was sich noch gewinnen lässt, fällt wie 88/N, während die Seek-Latenz wie N/24 steigt. Bei 48 Frames liegt man 1,8 Einheiten über der Untergrenze. Eine Verdopplung auf 96 gewinnt 0,9 davon zurück — unter 10 % der Frame-Größe — und kostet weitere 2 s an maximaler Seek-Latenz. Eine erneute Verdopplung gewinnt 0,46 zurück und kostet 4 s mehr. Die Wahl der GOP-Länge wird also durch die akzeptierbare Latenz bestimmt und nicht durch die Kompression, der man noch nachjagt: Nach einigen Dutzend Frames ist ein etwas weiter amortisierter I-Frame alles, was noch herauszuholen ist.
-
Quellen (1)
- Where I, P and B pictures and the GOP structure are specified: ITU-T Recommendation H.264, Advanced video coding for generic audiovisual services.