top of page
XSplit-Startseite

XSplit-Qualität, VBV-Puffer und Preset-Einstellungen

Melvin Dichoso
2. März 2016
5 Min. Lesezeit

XSplit verwendet den x264-Encoder. Daher entsprechen die im Titel genannten Parameter, mit Ausnahme der Qualitätsparameter, den Parametern im x264-Wiki hier.


Qualität

Da Qualität anders ist, beginnen wir genau damit. In x264-Begriffen heißt die Qualität CRF-Faktor oder Constant Rate Factor. Der Encoder akzeptiert jeden Wert von CRF=0 (verlustfrei) bis CRF=51 (schreckliche Qualität).

Beim Encodieren eines Videostreams kannst du verschiedene Verfahren zur Ratensteuerung verwenden. XSplit verwendet eine qualitätsbasierte Ratensteuerung, die eine bestimmte Qualität des codierten Videos anstrebt und dabei eine obere Bitratengrenze (vbv-maxrate) einhält. Zwischen den Qualitätsstufen besteht ein gewaltiger Unterschied in der erforderlichen Bitrate (und er ist NICHT linear). Die meisten Menschen würden nicht einmal einen Unterschied zwischen CRF=18 und CRF=0 erkennen, außer dass eine Aufnahme mit CRF=0 ziemlich viel Platz auf der Festplatte beansprucht.

In XSplit verwenden wir für das Streaming eine allgemeine Qualitätseinstellung zwischen 0 und 10, wobei 10 die höchste Qualität bedeutet. Qualität 10 entspricht CRF=25, was im Allgemeinen eine sehr gute Qualität darstellt. Qualität 0 entspricht wiederum CRF = 35, was in manchen Fällen akzeptabel sein kann, aber nicht besonders schön aussieht.

Darüber lässt sich diskutieren, dennoch ist es bei XSplit üblich, einen eigenen Qualitätsparameter zu verwenden und ihn intern in CRF umzuwandeln. Wir glauben, dass Menschen Qualität verstehen und an Werte zwischen 0 und 10 gewöhnt sind, wobei der letzte Wert der höchste ist. Wer diesen Weg gehen möchte, kann das jedoch problemlos anpassen.

Bei lokalen Aufnahmen bietet XSplit nur eine Qualitätseinstellung an und definiert weder eine bestimmte vbv-maxrate noch einen bestimmten vbv-buffer. Der Grund ist, dass uns bei einer lokalen Aufnahme die Bandbreitennutzung oft nicht interessiert. Eine Aufnahme mit einer bestimmten Zielqualität wird erstellt, und abhängig von der gewählten Qualität unterscheiden sich die Dateigrößen bei gleicher Eingabe.

In komplexen Szenen (Frames) werden mehr Bits verwendet, um eine gleichmäßige visuelle Qualität sicherzustellen, in weniger komplexen Szenen weniger. Der x264-Encoder versucht, die Bedeutung von Änderungen im Frame zu interpretieren und die visuelle Qualität anhand der Einstellungen zu optimieren (CRF, auch Qualitätseinstellung genannt). Die FPS-Grundlage für Qualität beträgt 25 Frames pro Sekunde. x264 skaliert die Qualität anhand der Bildrate des Videos, sodass eine bestimmte Qualitätseinstellung bei einem 60-FPS-Stream eine geringere Qualität pro Frame liefert als bei 25 FPS. Die Begründung ist einfach: Ein einzelner Frame bei 25 FPS ist wichtiger als einer bei 60 FPS, wenn das Gesamtziel dieselbe visuelle Qualität für beide Streams ist.

Auch bei lokalen Aufnahmen kann es erwünscht sein, die maximale Bandbreitennutzung zu begrenzen. Deshalb erlaubt die XSplit-Oberfläche weiterhin das Einstellen von vbv-maxrate und vbv-buffer. Darauf kommen wir gleich zurück.


VBV-Puffer und VBV-Maxrate

Die beiden wichtigsten Mechanismen zur Datenratensteuerung des x264-Encoders sind

- Modus mit durchschnittlicher Bitrate- Modus mit durchschnittlicher Qualität

In der XSplit-Benutzeroberfläche erlauben wir wie oben beschrieben nur den Modus mit durchschnittlicher Qualität, da dieser häufig deutlich effektiver ist.

Bei beiden Hauptverfahren wird jedoch häufig eine zusätzliche Ratensteuerung verwendet. Für erfolgreiches Livestreaming mit XSplit ist sie sogar erforderlich: die VBV-Ratensteuerung. Qualitätsbasiertes Encoding garantiert eine bestimmte Qualität, aber keine bestimmte Bandbreitennutzung. Beim Livestreaming darf weder deine verfügbare Uploadbandbreite noch die Downloadgeschwindigkeit der Zuschauer überschritten werden.

Streaming mit konstanter Bandbreite ist eine Option einiger Encoder. Dieser Ratensteuerungsmechanismus (oder dessen Fehlen) verschwendet jedoch Bandbreite und stellt oft höhere Anforderungen an die Verbindungsqualität sowohl des Senders als auch der Zuschauer.

XSplit verwendet stattdessen qualitätsbasiertes Encoding und legt eine VBV-maxrate sowie einen VBV-buffer fest. Das bedeutet im Wesentlichen, dass der x264-Encoder in XSplit versucht, eine gleichbleibende Streamqualität zu erhalten und in weniger komplexen oder weniger wichtigen Szenen weniger Bandbreite zu verwenden. Die VBV-maxrate setzt eine Obergrenze für die vom Encoder verwendbare Bandbreite, und zwar im Verhältnis zum VBV-buffer.

Wenn du VBV-maxrate=2000 und VBV-buffer=4000 einstellst, wird dein VBV-Puffer (Decodierpuffer) mit maximal 2000 Kbps gefüllt. Deine Videobitrate kann daher weiterhin den Einzelwert 2000 Kbps überschreiten, ABER du überschreitest in einem Zeitraum von 2 Sekunden nicht 4000 Kbit. Anders gesagt: VBV-maxrate ist nicht die höchste Bitrate, die im Stream auftreten kann, sondern nur die maximale Bitrate, die in den Puffer gelangen kann.

Wenn du dieses Konzept verstehst, erkennst du auch die Flexibilität des vbv-buffer. Er ermöglicht dem Encoder im Wesentlichen, eine Reihe von Frames vorauszuschauen und für manche Frames einer Sequenz mehr Bits und für andere weniger zu verwenden, solange der vbv-buffer nicht überschritten wird.

Jetzt musst du aber verstehen: Der vbv-buffer ist tatsächlich ein Puffer auf der Decoderseite und hängt daher vom Decoder ab, in unserem Fall meist Flash Player. Flash Player lässt sich mit einem Puffer von 0 Sekunden bis, hmm, vermutlich beliebig viel konfigurieren. Die meisten Streaminganbieter legen die Puffereinstellungen jedoch fest auf 1 oder 2 Sekunden. Deshalb passen die Streamingplugins von XSplit den vbv-buffer normalerweise automatisch auf X oder 2 * X Kilobit an, wenn vbv-maxrate auf X Kilobit pro Sekunde (Kbps) gesetzt ist. Ich hoffe, langsam ergibt das alles Sinn! Wenn der Flash-Player-Puffer deines Anbieters also etwa 10 Sekunden betrüge, könntest du meinen vbv-buffer erheblich vergrößern und dieselbe Qualität bei geringerer Gesamtbandbreite oder bessere Qualität bei gleicher Bandbreite erreichen. Du würdest dem Encoder im Wesentlichen mehr Freiheit geben, die Bitrate bei Bedarf kurzzeitig zu erhöhen. Du kannst daher erwarten, dass das XSplit-Team mit unseren Partnern spricht, um zu sehen, ob wir sie dazu bringen können, ihren Flash-Player-Puffer an den in XSplit eingestellten VBV-Puffer anzupassen.

Zum Abschluss möchte ich noch einmal auf lokale Aufnahmen zurückkommen. Für eine Aufnahme ist standardmäßig keine maximale Rate, also keine vbv-maxrate, und folglich auch kein vbv-buffer festgelegt. Wenn du das aufgenommene Video jedoch auf deiner Website veröffentlichen möchtest und Besucher es über den Flash Player im Internet abspielen sollen, solltest du diese Einstellung überdenken. Wenn du davon ausgehst, dass Zuschauer höchstens 1000 Kbps Downloadbandbreite haben und die Wiedergabe nach etwa 4 Sekunden beginnen soll, musst du zusätzlich zur für die lokale Aufnahme festgelegten Qualität die passenden VBV-Beschränkungen anwenden.

In unserem obigen Beispiel würden wir die folgenden XSplit-Einstellungen verwenden:

VBV Max Rate:1000 kbpsVBV Buffer:4000 kbps

Wahrscheinlich sollten wir auch Audio berücksichtigen. Ziehe hierfür einfach 1 x Audiobitrate von deiner VBV Max Rate und 4 x Audiobitrate von deinem VBV Buffer ab, dann bist du fertig.


Encoder-Preset

Es gibt mehrere integrierte Presets von „Ultrafast“ bis „Placebo“. XSplit verwendet ein eigenes Preset namens „XSplit Default“. In Zukunft kannst du erwarten, dass der Standard auf „Veryfast“ gesetzt wird.

Was bedeutet das alles?

H.264 legt eine Reihe von Kompressionsfunktionen fest, die ein Decoder unterstützen oder decodieren können muss. Je nach Fähigkeiten der Decoder werden diese in Profilgruppen unterteilt: High Profile, Medium Profile und Base Line Profile. Wir betrachten zunächst nur High Profile, das von Flash Player unterstützt wird.

Mit einem bestimmten Preset verwendet der x264-Encoder mehrere fortgeschrittene Preset-Funktionen, um den Video-Bitstream besser zu komprimieren. Alles langsamer als „Superfast“ ergibt einen High-Profile-kompatiblen Bitstream, sofern keine anderen eigenen Beschränkungen hinzugefügt werden. Darum kümmern wir uns vorerst nicht. Du musst nur wissen: Je langsamer dein Preset, desto stärker wird dein Stream komprimiert und desto bessere Qualität erreichst du bei begrenzter Bandbreite. ABER das erfordert erhebliche CPU-Leistung, abhängig von Bildrate und Auflösung.

Das Standardpreset ist entweder „XSplit Default“ oder „Veryfast“, die mehr oder weniger gleichwertig sind. Wenn gleichzeitig keine anderen CPU-intensiven Prozesse laufen und du mit „Veryfast“ 30 FPS bei 1280 x 720 übertragen oder encodieren möchtest, sollte ein i5-Prozessor genügen. Wenn die CPU-Auslastung auf einem Kern über 70 % steigt, musst du:

a) Eine niedrigere Auflösung verwendenb) Ein schnelleres Preset verwenden (etwa superfast)c) Einen guten Core-i7-Rechner kaufen

Um es kurz zu machen: Das gewählte Preset entspricht der Menge an Kompression, die du vom Encoder verlangst. Langsamer = mehr Kompression = höhere CPU-Auslastung.

Um das Gelernte zusammenzufassen, beantworten wir die einzige Frage, die dir jetzt wahrscheinlich noch im Kopf herumschwirrt -:):


Frage: Wenn ich eine lokale Aufnahme mit Qualität 8 erstelle und KEINE VBV-Beschränkungen festlege, erhalte ich dann eine bessere Videoqualität, wenn ich ein langsameres Preset auswähle?

Antwort: NEIN, DAS WIRST DU NICHT. Die Qualität ist genau dieselbe, aber je schneller dein Preset ist, desto weniger komprimiert ist das aufgenommene Video (größere Dateigröße). ABER wenn deine VBV-maxrate-Beschränkungen ausreichend streng sind, siehst du einen Qualitätsunterschied, weil ein langsameres Preset dich besser unter deiner festgelegten VBV-maxrate hält.

Kommentare


bottom of page