In diesem Abschnitt finden Sie Empfehlungen zur VP9-Codierung für verschiedene gängige Profile:

  • Hochgradig optimierte Videos für Web und Mobilgeräte (VOD)
  • Verbreitung von Premium-Inhalten (VOD)
  • Sport, Animation, 10‑Bit-Inhalte (VOD)
  • Livecodierung
  • WebRTC

Einführung

Beim Codieren von Videos sind einige Aspekte zu berücksichtigen:

  • Erstellen Sie eine einzelne Version Ihrer Media oder mehrere Versionen mit unterschiedlichen Bitraten und Auflösungen?
  • Erstellen Sie einen Live-Videostream oder On-Demand-Videodateien?
  • Welche Art von Medien codieren Sie? Gibt es viele Bewegungen? Detail? Animation?
  • Codierst du für maximale Qualität (z.B. Premium-Inhalte) oder Geschwindigkeit (z.B. Webkonferenzen)?

In diesem Abschnitt werden zuerst die Einstellungen für eine einfache On-Demand-Videodatei beschrieben und dann Empfehlungen für alle diese Fragen gegeben.

Grundlegende Einstellungen

Konversation zur Lösung des Problems.

Bitraten für die Codierung

Die folgenden Bitraten werden als Mindestanforderungen für die Web- und Mobilgerätebereitstellung empfohlen. Diese Vorschläge minimieren die Bitrate und sorgen gleichzeitig für eine Videoqualität, die für die Web- und Mobilgeräteverteilung geeignet ist. Sie können als Empfehlung für eine „niedrige“ Bitrate betrachtet werden, mit der sich immer noch eine angemessene Qualität erzielen lässt.

Vorgeschlagene Zielbitraten

Framegröße/‑rate Durchschnittliche Bitrate (VOD, kbit/s) Durchschnittliche Bitrate (Live, kbit/s)
320 × 240p bei 24,25,30 150 250
640 × 360p bei 24,25,30 276 386
640 × 480p bei 24,25,30 512 (LQ), 750 (MQ) 720 (LQ), 1024 (MQ)
1280 × 720p bei 24,25,30 1024 1440
1280 × 720p bei 50,60 1800 2.500
1.920 × 1.080 Pixel bei 24,25,30 fps 1800 2.500
1.920 × 1.080p bei 50,60 3000 4200
2560 × 1440 p bei 24,25,30 6000 8400
2560 × 1440 p bei 50,60 9000 12600
3.840 × 2.160 Pixel bei 24,25,30 fps 12.000 16800
3840 × 2160p bei 50,60 18000 25200

Abbildung 2a: Zielbitraten

VOD-Codierungseinstellungen

Einstellungen für die meisten Arten von Inhalten

Für die meisten Inhaltstypen empfehlen wir den Modus „Constrained Quality“ (CQ) mit Bitratenbegrenzungen. Die meisten Videos enthalten eine Mischung aus Szenen mit viel Bewegung (z.B. Actionsequenzen) und Szenen mit weniger Details (z.B. Gespräche). Im CQ-Modus kann der Encoder in längeren, einfacheren Szenen ein angemessenes Qualitätsniveau beibehalten, ohne Bits zu verschwenden, und gleichzeitig mehr Bits für schwierige Sequenzen zuweisen.

Wir empfehlen außerdem, den Bitratenbereich von 50% bis 150% des Zielwerts zuzulassen und die im Diagramm unten angegebenen Qualitätswerte zu verwenden. Für diesen Modus ist die Codierung in zwei Durchgängen erforderlich. Für HD und höher werden schnellere Einstellungen empfohlen, wie unten angegeben.

Encoder-Einstellungen für die CQ-Codierung

Frame-Höhe Zielqualität (CQ) Codierungsmodus
240 37 TWO_PASS_MEDIUM
360 36 TWO_PASS_MEDIUM
480 34 (geringe Qualität) oder 33 (mittlere Qualität) TWO_PASS_MEDIUM
720 32 TWO_PASS_FAST
1080 31 TWO_PASS_FAST
1440 24 TWO_PASS_FAST
2160 15 TWO_PASS_FAST

Abbildung 2b: Von CQ empfohlene Einstellungen

Wir empfehlen, zwischen Keyframes 240 Videoframes zu verwenden. Bei Inhalten mit 30 fps entspricht das 8 Sekunden. Schlüsselbilder sind Videoframes, die in sich geschlossen sind. Sie sind nicht auf andere Frames angewiesen, um gerendert zu werden. Weitere Informationen finden Sie unter GOP-Struktur. Bei der Wiedergabe im Web und auf Mobilgeräten lassen wir viel Spielraum zwischen Keyframes, da der Encoder so die „beste“ Platzierung von Keyframes auswählen kann, um die Qualität zu maximieren.

Beispiel für Befehlszeilenparameter: 640 × 360-Video

Daraus ergeben sich folgende Empfehlungen für 360p-Videos:

  1. CQ-Stufe 36 (siehe Abbildung 2b)
  2. Zielbitrate von 276 kbit/s (siehe Abbildung 2a)
  3. Zulässige Mindestbitrate von 138 Kbit/s (50% des Zielwerts)
  4. Die maximal zulässige Bitrate beträgt 414 Kbit/s (150% des Zielwerts).
  5. Maximaler Keyframe-Abstand von 240 Sekunden
  6. Zwei Durchgänge, Profil „Mittel“

Daraus ergeben sich die folgenden Befehlszeilenparameter für libvpx und FFmpeg:

libvpx

--end-usage=cq --cq-level=36 --target-bitrate=276 --minsection-pct=50 \
  --maxsection-pct=150 --kf-max-dist=240 --passes=2 --good --cpu-used=2

FFmpeg

-crf 36 -b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2

Einstellungen für Premium-Inhalte

In den obigen Beispielen haben wir relativ schnelle Codierungseinstellungen verwendet, um unsere Videostreams effizient zu erstellen. Bei einigen Inhalten (z. B. Premiumfilmen) lohnt es sich jedoch, mehr Zeit für die Codierung aufzuwenden, um eine höhere Ausgabequalität zu erzielen.

Für Premium-Inhalte empfehlen wir die gleichen Einstellungen wie oben, aber mit anderen Voreinstellungen, die den Encoder anweisen, mehr Zeit für die Optimierung der Qualität aufzuwenden:

Codierungsmodi und Befehlszeilenparameter für Premium-Inhalte

Frame-Höhe Codierungsmodus libvpx FFmpeg
240 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
360 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
480 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
720 TWO_PASS_SLOW --good --cpu-used 1 -good -speed 1
1080 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2
1440 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2
2160 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2

Abbildung 2c: Codierungsmodi für Premium-Inhalte

Einstellungen für Sportinhalte und Inhalte mit schnellen Bewegungen

Wir empfehlen die VBR-Codierung für Sportinhalte. Bei Sportinhalten gibt es in der Regel ein ziemlich gleichbleibendes Maß an Bewegung und Komplexität. Mit VBR wird in Phasen mit weniger Bewegung eine höhere Qualität als bei der QP-Codierung erreicht.

Der Hauptunterschied zwischen dem QP- und dem VBR-Modus in der Befehlszeile besteht darin, dass Sie kein CQ-Level angeben. Ansonsten sind die empfohlenen Einstellungen dieselben.

Beispiel für VBR-Befehlszeilenparameter: 640 × 360-Video

libvpx

--end-usage=vbr --target-bitrate=276 --minsection-pct=50 --maxsection-pct=150 \
  --kf-max-dist=240 --passes=2 --good --cpu-used=2

FFmpeg

-b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2

Einstellungen für Animationen und Spiele

Einstellungen für Inhalte mit Rauschen / minderwertige Inhalte

Bei verrauschten Inhalten empfehlen wir, die Anzahl und Stärke der Alt-Ref-Frames zu erhöhen. Alternative Referenzframes sind „unsichtbare“ Frames, die dem Nutzer nie angezeigt werden, aber als Referenz beim Erstellen der finalen Frames verwendet werden (weitere Informationen).

Die folgenden Parameter werden empfohlen, um VP9 anzuweisen, mehr Alt-Ref-Frames zu verwenden:

libvpx

--auto-alt-ref=1 --lag-in-frames-16 --arnr-maxframes=5 --arnr-strength=3

FFmpeg

10‑Bit-/HDR-Codierung

Für die 10-Bit-Codierung sollten Sie VP9 Profile 2 verwenden. Für die 10-Bit-Codierung sind nicht mehr Bits erforderlich. Die restlichen Parameter sind also gleich:

libvpx

--profile=2

FFmpeg

-profile 2

Live-Codierungseinstellungen

Livestreaming

Die Live-Codierung erfolgt in der Regel als CBR, was die Fähigkeit des Encoders einschränkt, die Qualität zu maximieren. Aus diesem Grund verwenden wir höhere Bitraten, wie in Abbildung 2a dargestellt.

Auch bei der Live-Codierung möchten wir die Anzahl der Threads maximieren. Dies läuft so ab:

  1. VP9 darf das Video in Spalten aufteilen, die mindestens 256 Pixel breit sein und eine Zweierpotenz darstellen müssen.
  2. Dadurch wird VP9 angewiesen, mehr CPU-Leistung zu verwenden. In der folgenden Tabelle finden Sie Empfehlungen für jede Auflösung.

Empfehlungen für Kacheln und Threads

Encoder-Einstellungen für die CQ-Codierung
Framegröße Anzahl der Kachelspalten Anzahl der Threads
320 x 240 1 2
640 x 360 2 4
640 x 480 2 4
1.280 x 720 4 8
1.920 x 1.080 4 8
2560x1440 8 16
3.840 x 2.160 8 16

Abbildung 2d: Empfohlene Kachelung und Threading für die Live-Codierung

Bei der Live-Codierung wird die Frist auch auf „Echtzeit“ festgelegt, um die Leistung zu optimieren. Außerdem wird festgelegt, dass Alt-Ref-Frames nicht in die Zukunft blicken sollen, da dies zu Latenz führen würde:

Daraus ergeben sich die folgenden Empfehlungen für Live-360p-Videos:

  1. CBR, Zielbitrate von 386 kbit/s (siehe Abbildung 2a)
  2. 2 Kachelspalten (siehe Abbildung 2d)
  3. 4 Fäden (siehe Abbildung 2d)
  4. Echtzeitleistung
  5. Keine Latenz aufgrund alternativer Frames (keine Frame-Verzögerung)

Daraus ergeben sich die folgenden Befehlszeilenparameter für libvpx und FFmpeg:

libvpx

--end-usage=cbr --target-bitrate=386 --cpu-used=4 --tile-columns=2 --rt --lag-in-frames=0

FFmpeg

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -r 29.97 -b:v 386k \
  -minrate 386k -maxrate 386k -c:v libvpx-vp9 -c:a libopus output.webm

Live-VP9-Codierung für DASH/YouTube

WebRTC-Codierung

: