Empfohlene Einstellungen für VOD
Zweck
In diesem Abschnitt finden Sie Empfehlungen zu VP9-Codierungseinstellungen bei der dateibasierten Codierung, d.h. nicht live.
Diese Empfehlungen sind auf die folgenden Ziele ausgerichtet:
- Die richtige Balance zwischen Qualität und Codierungsgeschwindigkeit
- Die minimale Bitrate für eine angemessene Qualität
- Einstellungen für eine Vielzahl von Inhaltstypen
Folgendes gilt nicht:
- Live-Codierung für Adresse
- Für bestimmte Inhaltstypen optimieren (z.B. High-Motion-Sportaufnahmen)
- Einstellungen für bestimmte Geräte- oder Netzwerkanforderungen konfigurieren
Codierung mit einer Auflösung
VP9 unterstützt verschiedene Frame-Größen – von winzigen Auflösungen bis zu 4K. Größere Frame-Größen bieten eine höhere Qualität, benötigen aber mehr Bandbreite und zur Decodierung zusätzliche Verarbeitungsleistung.
Wenn Sie nur eine einzige Auflösung erstellen, ist 640 x 480 eine sichere Wahl für alle Web- und Mobilgeräte. Mit den folgenden FFmpeg-Befehlszeilenparametern können Sie eine Datei mit einer Auflösung von 750 kBit/s erstellen.
-vf scale=640x480 -b:v 750k -quality good -speed 0 -crf 33 \
-c:v libvpx-vp9 -c:a libopus output.webm
Codierung in mehreren Auflösungen
Wenn Sie mehrere Auflösungen planen möchten oder Ihr Bereitstellungsnetzwerk unterschiedliche Bandbreite hat, wird empfohlen, mehrere Auflösungen zu erstellen. Der Player kann dann festlegen, welche Auflösung an den Zuschauer gesendet wird.
Videocodierungen mit mehreren Auflösungen werden oft für das Streaming mit adaptiver Bitrate verwendet, wobei der Videoplayer in Echtzeit anhand der Bandbreite des Nutzers zwischen Auflösungen wechselt. Mit Shaka Player können Sie beispielsweise Codierungen mit mehreren Auflösungen abspielen, wobei sich jede VP9-Codierung in einer separaten Datei befindet und ein DASH-Manifest Informationen zu den einzelnen Codierungen bereitstellt.
Weitere Informationen zum Verpacken von Videos in adaptiven Streamingformaten findest du unter Shaka Packager. In diesem Leitfaden konzentrieren wir uns auf die Codierungseinstellungen für VP9 in mehreren Auflösungen.
Empfohlene Einstellungen
Alle der folgenden Einstellungen können für einzelne Dateien in verschiedenen Auflösungen verwendet werden. In Kombination bieten sie einen umfassenden Satz, der für adaptives Streaming geeignet ist. Die Version 640 x 480 hat zwei Versionen: eine mit niedriger Qualität (LQ) und eine mit niedriger Qualität (MQ).
Bitrate
Der Modus „Begrenzte Qualität (CQ)“ wird beim Codieren von VP9-Dateien für die On-Demand-Wiedergabe empfohlen. Mit diesem Codierungsmodus kannst du eine durchschnittliche Ziel-Bitrate angeben und gleichzeitig die maximale Qualität des Videos sowie die minimale und maximale Bitrate steuern.
Die folgenden Bitraten werden als Referenz für die Web- und mobile Verteilung vorgeschlagen. Durch diese Vorschläge wird die Bitrate minimiert, die für die Web- und mobile Verteilung von Nutzern geeignet ist. Sie ist eine Bitrate von Empfehlungen mit geringer Bitrate, die aber dennoch eine angemessene Qualität erreichen kann.
Für die obigen Beispiele empfiehlt es sich, eine Mindestbitrate von 50 % für die Zielbitrate und maximal 145% für das Ziel festzulegen.
Frame-Größe/Framerate | Ziel-Bitrate (VOD, kbit/s) | Min. Bitrate (50%) | Max. Bitrate (145%) |
---|---|---|---|
320 x 240p bei 24,25,30 | 150 | 75 | 218 |
640 x 360p bei 24,25,30 | 276 | 138 | 400 |
640 x 480p bei 24,25,30 | 512 (LQ), 750 (MQ) | 256 (LQ) 375 (MQ) | 742 (LQ) 1088 (MQ) |
1280 × 720p bei 24,25,30 | 1.024 | 512 | 1485 |
1.280 × 720p bei 50,60 | 1.800 | 900 | 2610 |
1920 × 1080p bei 24,25,30 | 1.800 | 900 | 2610 |
1920 × 1080p bei 50,60 | 3.000 | 1.500 | 4350 |
2560 x 1440p bei 24,25,30 | 6.000 | 3.000 | 8700 |
2.560 x 1.440 p bei 50,60 | 9000 | 4.500 | 13050 |
3840 x 2160p bei 24,25,30 | 12000 | 6.000 | 17400 |
3840 × 2160p bei 50,60 | 18000 | 9000 | 26100 |
In FFmpeg wird die Bitrate mit den folgenden Befehlen gesteuert:
FFMPEG | |
---|---|
-b:v <arg> |
Legt die Bitrate fest (z. B. 500.000) |
-minrate <arg> -maxrate <arg> |
Legt die minimale und maximale Bitrate fest. |
Wenn du beispielsweise Inhalte im Format 640 x 480 codieren möchtest, kannst du die Befehlszeile -b:v 750k -minrate 375 -maxrate 1088
verwenden.
Qualität
Im CQ-Modus legen Sie außerdem die maximale Qualitätsstufe fest. Für dateibasierte VP9-Codierungen werden die folgenden Qualitätsstufen empfohlen:
Frame-Höhe | Zielqualität |
---|---|
240 | 37 |
360 | 36 |
480 | 34 (LQ) oder 33 (MQ) |
720 | 32 |
1080 | 31 |
1440 | 24 |
2160 | 15 |
In FFmpeg wird die Qualität mit dem Befehl -crf
festgelegt. Wenn Sie beispielsweise die Qualität auf 33 festlegen möchten, verwenden Sie den Befehl -crf 33
.
Multipass-Codierung und Codierungsgeschwindigkeit
Eine dateibasierte Codierung ermöglicht Ihnen eine hohe Geschwindigkeit. Du kannst auch mehrere Karten/Tickets für dasselbe Material ausführen, um die Qualität zu erhöhen, und Geschwindigkeiten für die einzelnen Materialien auswählen.
Wenn Sie VP9-Dateien in FFmpeg codieren, empfehlen wir, den Parameter -quality
auf good
und dann die Geschwindigkeit des ersten und zweiten Passes gemäß der Tabelle unten mit dem Parameter -speed
festzulegen. So erhalten Sie ein gutes Gleichgewicht zwischen Codierungszeit und Ausgabequalität.
Frame-Höhe | Speed (First Pass) Geschwindigkeit | Speed (Zweiter Pass) |
---|---|---|
240 | 4 | 1 |
360 | 4 | 1 |
480 | 4 | 1 |
720 | 4 | 2 |
1080 | 4 | 2 |
1440 | 4 | 2 |
2160 | 4 | 2 |
Ein erster Passcode-String in FFmpeg könnte beispielsweise -quality good -speed 4
enthalten.
Keyframe-Abstand
Es wird empfohlen, bis zu 240 Frames auf Videos zwischen den Keyframes zu erlauben (8 Sekunden für 30 fps). Keyframes sind selbstständige Videoframes. Sie nutzen zum Rendern keine anderen Frames, sie sind aber in der Regel größer als andere Frametypen. Bei der Web- und mobilen Wiedergabe kann der Encoder dank der großzügigen Abstände zwischen den Keyframes die optimale Platzierung der Keyframes auswählen, um die Qualität zu maximieren.
Im FFmpeg-Keyframe- Abstand wird der Befehl -g
gesteuert, der die Anzahl der Frames angibt. Bei 240 Frames wäre das -g 240
.
Tiling- und Thread-Empfehlungen
Durch die Tiding-Funktion wird der Videoframe in mehrere Spalten aufgeteilt. Dadurch wird die Qualität geringfügig reduziert, aber die Codierungsleistung wird beschleunigt. Kacheln müssen mindestens 256 Pixel breit sein. Deshalb ist die Anzahl der möglichen Kacheln begrenzt.
Je nach Anzahl der Kacheln und Auflösung des Ausgabeframes können mehr CPU-Threads hilfreich sein. Allgemein ausgedrückt, ist der Wert für mehrere Threads begrenzt, wenn die Größe des Ausgabe-Frames sehr klein ist.
Die folgenden Einstellungen werden für das Kachel- und Threading bei verschiedenen Auflösungen empfohlen.
Frame-Größe | Anzahl der Kachelspalten | Anzahl der Threads |
---|---|---|
320 x 240 | 1 (-tile-columns 0 ) |
2 |
640 x 360 | 2 (-tile-columns 1 ) |
4 |
640 x 480 | 2 (-tile-columns 1 ) |
4 |
1.280 x 720 | 4 (-tile-columns 2 ) |
8 |
1.920 x 1.080 | 4 (-tile-columns 2 ) |
8 |
2560x1440 | 8 (-tile-columns 3 ) |
16 |
3.840 x 2.160 | 8 (-tile-columns 3 ) |
16 |
In FFmpeg wird die Anzahl der Kacheln durch den Parameter -tile-columns
und die Anzahl der Threads von -threads
gesteuert. Eine 640-x-480-Codierung würde beispielsweise die Befehlszeile -tile-columns 2 -threads 4
verwenden.
FFmpeg-Befehlszeilen
Wenn Sie die oben genannten Empfehlungen zusammenführen, können die folgenden FFmpeg-Befehle für die Codierung von VP9-Inhalten verwendet werden.
Beachten Sie, dass der Befehl für den ersten und zweiten Pass verkettet ist. Das Argument -y
im Befehl für den zweiten Pass gibt die Antwort „Ja“ an, wenn FFmpeg anfordert, die Statistikdatei für den ersten Pass mit dem Ausgabevideo zu überschreiben.
Außerdem wird eine 1.080p-Quelle für Codierungen mit einer Leistung von bis zu 1.280 × 720 verwendet. Eine 4K-Quelle wird für eine höhere Ausgabe verwendet.
320 × 240 (24, 25 oder 30 Bilder pro Sekunde)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=320x240 -b:v 150k \ -minrate 75k -maxrate 218k -tile-columns 0 -g 240 -threads 2 \ -quality good -crf 37 -c:v libvpx-vp9 -c:a libopus \ -pass 1 -speed 4 tos-320x240.webm && \ ffmpeg -i tears_of_steel_1080p.webm -vf scale=320x240 -b:v 150k \ -minrate 75k -maxrate 218k -tile-columns 0 -g 240 -threads 2 \ -quality good -crf 37 -c:v libvpx-vp9 -c:a libopus \ -pass 2 -speed 1 -y tos-320x240.webm
- Eingabedatei: tears_of_steel_1080p.webm (1.920 × 800, 544,88 MB)
- Ausgabedatei: tos-320x240.webm (320 x 240, 21,73 MB)
640 × 360 (24, 25 oder 30 Bilder pro Sekunde)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x360 -b:v 276k \
-minrate 138k -maxrate 400k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 36 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x360 -b:v 276k \
-minrate 138k -maxrate 400k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 36 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-640x360.webm
- Eingabedatei: tears_of_steel_1080p.webm (1.920 × 800, 544,88 MB)
- Ausgabedatei: tos-640x360.webm (640 x 360, 31,53 MB)
640 × 480 (niedrige Qualität, 24, 25 oder 30 Bilder pro Sekunde)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 512k \
-minrate 256k -maxrate 742k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 34 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360-low.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 512k \
-minrate 256k -maxrate 742k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 34 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-640x480-low.webm
- Eingabedatei: tears_of_steel_1080p.webm (1.920 × 800, 544,88 MB)
- Ausgabedatei: tos-640x480-low.webm (640 x 480, 51,18 MB)
640 × 480 (mittlere Qualität, 24, 25 oder 30 Bilder pro Sekunde)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 750k \
-minrate 375k -maxrate 1088k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 33 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360-medium.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 750k \
-minrate 375k -maxrate 1088k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 33 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-640x480-medium.webm
- Eingabedatei: tears_of_steel_1080p.webm (1.920 × 800, 544,88 MB)
- Ausgabedatei: tos-640x480-medium.webm (640 x 480, 69,27 MB)
1280 × 720 (24, 25 oder 30 Bilder pro Sekunde)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1024k \
-minrate 512k -maxrate 1485k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1280x720-24-30fps.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1024k \
-minrate 512k -maxrate 1485k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-1280x720-24-30fps.webm
- Eingabedatei: tears_of_steel_1080p.webm (1.920 × 800, 544,88 MB)
- Ausgabedatei: tos-1280x720-24-30fps.webm (1.280 x 720, 98,2 MB)
1.280 × 720 (50 oder 60 Bilder pro Sekunde)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1280x720-50-60fps.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4-y tos-1280x720-50-60fps.webm
- Eingabedatei: tears_of_steel_1080p.webm (1.920 × 800, 544,88 MB)
- Ausgabedatei: tos-1280x720-50-60fps.webm (1.280 x 720, 157,1 MB)
1.920 × 1.080 (24, 25 oder 30 Bilder pro Sekunde)
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1920x1080-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-1920x1080-24-30fps.webm
- Eingabedatei: tearsofsteel_4k.mov (3.840 x 1.714, 6,76 GB)
- Ausgabedatei: tos-1920x1080-24-30fps.webm (1.920 x 1.080, 151,51 MB)
1.920 × 1.080 (50 oder 60 Bilder pro Sekunde)
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 3000k \
-minrate 1500k -maxrate 4350k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1920x1080-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 3000k \
-minrate 1500k -maxrate 4350k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-1920x1080-50-60fps.webm
- Eingabedatei: tearsofsteel_4k.mov (3.840 x 1.714, 6,76 GB)
- Ausgabedatei: tos-1920x1080-50-60fps.webm (1.920 x 1.080, 238,18 MB)
2.560 x 1.440 (24, 25 oder 30 Bilder pro Sekunde)
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 6000k \
-minrate 3000k -maxrate 8700k -tile-columns 3 -g 240 -threads 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-2560x1440-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 6000k \
-minrate 3000k -maxrate 8700k -tile-columns 3 -g 240 -threads 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-2560x1440-24-30fps.webm
- Eingabedatei: tearsofsteel_4k.mov (3.840 x 1.714, 6,76 GB)
- Ausgabedatei: tos-2560x1440-24-30fps.webm 2560 x 1440, 533,54 MB)
2.560 x 1.440 (50 oder 60 Bilder pro Sekunde)
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 9000k \
-minrate 4500k -maxrate 13050k -tile-columns 3 -g 240 -threads 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-2560x1440-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 9000k \
-minrate 4500k -maxrate 13050k -tile-columns 3 -g 240 -threads 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-2560x1440-50-60fps.webm
- Eingabedatei: tearsofsteel_4k.mov (3.840 x 1.714, 6,76 GB)
- Ausgabedatei: tos-2560x1440-50-60fps.webm 2560 x 1440, 664,04 MB)
3840 × 2160 (24, 25 oder 30 Bilder pro Sekunde)
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 12000k \
-minrate 6000k -maxrate 17400k -tile-columns 3 -g 240 -threads 24 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-3840x2160-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 12000k \
-minrate 6000k -maxrate 17400k -tile-columns 3 -g 240 -threads 24 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-3840x2160-24-30fps.webm
- Eingabedatei: tearsofsteel_4k.mov (3.840 x 1.714, 6,76 GB)
- Ausgabedatei: tos-3840x2160-24-30fps.webm 3840 x 2160, 1,03 GB)
3.840 x 2.160 (50 oder 60 Bilder pro Sekunde)
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 18000k \
-minrate 9000k -maxrate 26100k -tile-columns 3 -g 240 -threads 24 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-3840x2160-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 18000k \
-minrate 9000k -maxrate 26100k -tile-columns 3 -g 240 -threads 24 \
-quality good -speed 4 -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -y tos-3840x2160-50-60fps.webm
- Eingabedatei: tearsofsteel_4k.mov (3.840 x 1.714, 6,76 GB)
- Ausgabedatei: tos-3840x2160-50-60fps.webm 3840 x 2160, 1,56 GB)