Grundlegende Codierung

Videokomprimierung – Grundlagen

In diesem Abschnitt werden grundlegende Optionen für die VP9-Codierung beschrieben, darunter Frame-Größe, grundlegende Bitratensteuerung und -qualität.

Wenn du noch keine Erfahrung mit der Videokomprimierung hast, solltest du dir dieses Video ansehen. Dort findest du weitere Informationen zur Funktionsweise und die Funktionsweise der Videokomprimierung.

Einfache Codierung

Mit dem folgenden FFmpeg-Befehl wird eine Eingabedatei in VP9-Videos mit Opus-Audio umgewandelt. Das ist die einfachste mögliche Codierung, bei der Standardeinstellungen verwendet werden.

ffmpeg -i tears_of_steel_1080p.webm -c:v libvpx-vp9 -c:a libopus output.webm

Für diese FFmpeg-Codierung werden die folgenden Befehlszeilenparameter verwendet:

FFMPEG
-i <filename> Name der Eingabedatei
-c:v libvpx-vp9 Teilt FFmpeg mit, VP9-Videos zu erstellen
-c:a libopus Gibt FFmpeg an, die Opus-Audiodatei zu erstellen
output.webm Name der Ausgabedatei

FFmpeg leitet den Dateityp ab, den Sie aus dem von Ihnen verwendeten Namen der Ausgabedatei erstellen. In diesem Beispiel gibt FFmpeg eine WebM-Datei aus, da wir output.webm angefordert haben.

Auflösung

Jedes Video hat eine Framegröße, die die Pixelbreite und -höhe angibt. Mit dem folgenden FFmpeg-Befehlszeilenparameter können Sie die Größe des ausgegebenen Video-Frames für die VP9-Codierung steuern:

FFMPEG
-vf scale=<width>x<height> Frame-Breite und -Höhe

Durch den folgenden FFmpeg-Befehl wird beispielsweise ein VP9-WebM-Video mit der Größe 640 × 480 ausgegeben.

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -c:v libvpx-vp9 -c:a libopus output.webm

Kleinere Auflösungen sind von geringerer Qualität. Für größere Auflösungen ist jedoch eine höhere Bandbreite erforderlich, sodass die Decodierung höher ist und möglicherweise nicht auf älteren Geräten unterstützt wird. Für VP9 gilt die 640-x-480-Version als sichere Auflösung für ein breites Spektrum an mobilen und Web-Geräten.

Bitrate (Bitrate)

VP9 unterstützt verschiedene Bitratenmodi:

Modus
Konstanter Quantizer (Q) Hiermit können Sie einen festen Quantisatorwert angeben. Die Bitrate variiert.
Beschränkte Qualität Hiermit können Sie eine höchste Qualitätsstufe festlegen. Die Qualität kann innerhalb der Bitratenparameter variieren.
Variable Bitrate (VBR) Schafft ein Gleichgewicht zwischen Qualität und Bitrate im Zeitverlauf innerhalb von Bitratenbeschränkungen.
Konstante Bitrate (CBR) Versuche, die Bitrate recht konstant zu halten, während die Qualität variiert

Der CQ-Modus wird für dateibasierte Videos empfohlen und nicht für Livestreaming. Die folgenden FFmpeg-Befehlszeilenparameter werden für den CQ-Modus verwendet:

FFMPEG
-b:v <arg> Legt die Zielbitrate fest (z. B. 500.000)
-minrate <arg>
-maxrate <arg>
Legt die minimale und maximale Bitrate fest.
-crf <arg> Legt die maximale Qualitätsstufe fest. Gültige Werte sind: 0–63, niedrigere Zahlen sind von höherer Qualität.

Durch den folgenden FFmpeg-Befehl wird beispielsweise eine 640 x 480 große Videodatei im CQ-Modus erstellt. Die durchschnittliche Bitrate beträgt 750 kBit/s und die maximale Qualität ist auf 33 begrenzt.

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -b:v 750k -crf 33 -c:v libvpx-vp9 -c:a libopus output.webm

Die Bitrate hängt von der zu erreichenden Qualität und der Auflösung des Videos ab. Eine vollständige Empfehlung für Bitraten mit verschiedenen Auflösungen findest du hier.

Einstellungen für Qualität und Geschwindigkeit

Das Komprimieren von Videos stellt einen Kompromiss zwischen der Qualität der Ausgabe und der Zeit dar, die für die Erstellung benötigt wird. Grundsätzlich lässt sich eine höhere Qualität erreichen, da mehr Zeit zum Codieren benötigt wird. Allerdings ist die Zeit für das Abrufen der höchstmöglichen Qualität möglicherweise nicht praktikabel.

VP9 bietet mehrere Einstellungen, bei denen Sie Qualität und Geschwindigkeit berücksichtigen:

  • Mit der Qualitätseinstellung wird der Encoder über die Methode zur Komprimierung von Videos informiert. Die verfügbaren Modi sind am besten, gut und in Echtzeit.

  • Mit den Threadeinstellungen kann der Encoder mehrere CPU-Threads codieren. Diese Einstellungen können die Qualität zwar geringfügig verringern, jedoch die Codierung und Decodierung erheblich verbessern.

Diese beiden Arten von Einstellungen werden über mehrere Befehlszeilenparameter gesteuert:

FFMPEG
-threads Gibt die Anzahl der Threads an, die während der Codierung verwendet werden sollen.
-quality Kann auf good, best oder realtime festgelegt sein
-speed Dieser Parameter hat unterschiedliche Bedeutungen, je nachdem, ob die Qualität auf good oder realtime festgelegt ist. Die Geschwindigkeitseinstellungen 0-4 gelten für VoD in good und best. Dabei steht 0 für die höchste Qualität und 4 für die niedrigste Qualität. Realtime gültige Werte sind 5-8. Niedrigere Zahlen bedeuten eine höhere Qualität.
-tile-columns Durch die Tiling-Funktion wird das Video in rechteckige Bereiche aufgeteilt, die für das Codieren und Decodieren Multithreading ermöglichen. Die Anzahl der Kacheln ist immer hoch zwei. 0=1 Kachel, 1=2, 2=4, 3=8, 4=16, 5=32.

Mit dem folgenden FFmpeg-Befehl wird eine Datei im Format 640 x 480 mit einer Qualität von 'good' und einer Geschwindigkeit von 0 (hohe Qualität) erstellt:

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -b:v 750k -quality good -speed 0 -crf 33 -c:v libvpx-vp9 -c:a libopus \
  output.webm

Die verfügbaren Einstellungen für die Qualität und Geschwindigkeit können je nach Auflösung und verfügbarer Verarbeitungsleistung variieren. Eine vollständige Reihe von Empfehlungen finden Sie im nächsten Abschnitt.