Zalecane ustawienia VOD
Cel
W tej sekcji znajdziesz zalecenia dotyczące ustawień kodowania VP9 podczas kodowania na podstawie plików (tj. nieaktywne).
Te zalecenia zostały opracowane z myślą o tych celach:
- Równowaga między szybkością kodowania a jakością
- Minimalna szybkość transmisji bitów umożliwiająca uzyskanie rozsądnej jakości
- Ustawienia pozwalające na obsługę wielu różnych typów treści
Rekomendacje te nie:
- Adresowanie kodowania
- Optymalizuj pod kątem określonych typów treści (np. sporty sportowe
- Skonfiguruj ustawienia dotyczące konkretnych urządzeń lub sieci
Kodowanie w jednej rozdzielczości
VP9 obsługuje różne rozmiary klatek – od małych rozdzielczości po 4K. Większe rozmiary klatek zapewniają wyższą jakość, ale wymagają większej przepustowości i większej mocy obliczeniowej do dekodowania.
Jeśli tworzysz pojedynczą rozdzielczość, 640 x 480 to bezpieczny wybór przy szerokiej gamie urządzeń internetowych i mobilnych. Te parametry wiersza poleceń FFmpeg pozwalają tworzyć pliki o pojedynczej rozdzielczości z szybkością 750 kb/s.
-vf scale=640x480 -b:v 750k -quality good -speed 0 -crf 33 \
-c:v libvpx-vp9 -c:a libopus output.webm
Kodowanie w wielu rozdzielczości
Jeśli planujesz kierować reklamy na wiele rozdzielczości lub Twoja sieć dostawy działa w różny sposób, zalecamy utworzenie wielu rozdzielczości. Twój odtwarzacz może potem określić, która rozdzielczość ma być wysyłana do widza.
Kodowania filmów w wielu rozdzielczości są często używane w strumieniowej transmisji strumieniowej z adaptacyjną szybkością transmisji, w której odtwarzacz zmienia rozdzielczość w czasie rzeczywistym z uwzględnieniem przepustowości użytkownika. Na przykład Shaka Player umożliwia odtwarzanie kodów w wielu rozdzielczościach, gdzie każdy kod VP9 znajduje się w innym pliku, a plik manifestu DASH zawiera informacje o każdym z nich.
Więcej informacji o pakowaniu filmów w formatach adaptacyjnych transmisji znajdziesz w artykule Shaka Packager. W tym przewodniku skupimy się na ustawieniach kodowania VP9 w wielu rozdzielczościach.
Zalecane ustawienia
Wszystkie poniższe ustawienia można stosować do poszczególnych plików w różnych rozdzielczościach. Łącznie zapewniają one kompleksowy zestaw odpowiedni do strumieniowego przesyłania strumieniowego. Pamiętaj, że wersja 640 x 480 ma dwie wersje: jedną o niskiej jakości (LQ) i drugą o średniej jakości (MQ).
Szybkość transmisji bitów
W przypadku kodowania VP9 na potrzeby odtwarzania na żądanie zalecamy tryb ograniczonego dostępu (CQ). W tym trybie możesz określić docelową średnią szybkość transmisji bitów, a jednocześnie kontrolować maksymalną jakość filmu oraz minimalną i maksymalną szybkość transmisji bitów.
Podane poniżej szybkości transmisji bitów są sugerowane jako punkty odniesienia w przypadku dystrybucji w internecie i na urządzeniach mobilnych. Te sugestie minimalizują szybkość transmisji bitów, co pozwala uzyskać jakość wideo odpowiednią do rozpowszechniania w internecie i na urządzeniach mobilnych. traktuj je jako rekomendację dotyczącą szybkości transmisji bitów, a przy tym proponując odpowiednią jakość.
W powyższych przykładach zaleca się, aby minimalna szybkość transmisji bitów wynosiła 50% docelowej szybkości transmisji bitów, a maksymalna – 145% wartości docelowej.
Rozmiar i liczba klatek | Szybkość transmisji bitów docelowej (VOD, kb/s) | Minimalna szybkość transmisji bitów (50%) | Maks. szybkość transmisji bitów (145%) |
---|---|---|---|
320 x 240p w 24,25,30 | 150 | 75 | 218 |
640 x 360p przy 24,25,30 | 276 | 138 | 400 |
640 x 480p przy 24,25,30 | 512 (LQ), 750 (MQ) | 256 (LQ) 375 (MQ) | 742 (LQ) 1088 (MQ) |
1280 x 720p przy 24,25,30 | 1024 | 512 | 1485 |
1280 x 720p przy 50,60 | 1800 | 900 | 2610 |
1920 x 1080p przy 24,25,30 | 1800 | 900 | 2610 |
1920 x 1080p przy 50,60 | 3000 | 1500 | 4350 |
2560 x 1440p przy 24,25,30 | 6000 | 3000 | 8700 |
2560 x 1440p przy 50,60 | 9000 | 4500 | 13050 |
3840 x 2160p o 24,25,30 | 12000 | 6000 | 17400 |
3840 x 2160p przy 50,60 | 18000 | 9000 | 26100 |
W FFmpeg szybkość transmisji bitów jest sterowana za pomocą tych poleceń:
FFmpeg | |
---|---|
-b:v <arg> |
Ustawia szybkość transmisji bitów (np.500 tys.) |
-minrate <arg> -maxrate <arg> |
Ustawia minimalną i maksymalną szybkość transmisji bitów. |
Na przykład do kodowania treści o wymiarach 640 x 480 można użyć wiersza poleceń -b:v 750k -minrate 375 -maxrate 1088
.
Jakość
W trybie tej jakości ustawiasz też maksymalny poziom jakości. W przypadku kodowania VP9 opartego na plikach zalecamy następujące poziomy jakości:
Wysokość klatki | Jakość docelowa (CQ) |
---|---|
240 | 37 |
360 | 36 |
480 | 34 (LQ) lub 33 (MQ) |
720 | 32 |
1080 | 31 |
1440 | 24 |
2160 | 15 |
W FFmpeg jakość jest ustawiana za pomocą polecenia -crf
. Aby na przykład ustawić jakość 33, użyj polecenia -crf 33
Kodowanie wielopasmowe i szybkość kodowania
Kodowanie oparte na plikach zapewnia elastyczność w szybkości. Możesz też wykorzystać wiele biletów na ten sam materiał, aby poprawić jakość, i wybrać szybkość dla każdego z nich.
Przy kodowaniu plików VP9 w FFmpeg zaleca się ustawienie parametru -quality
na good
, a następnie ustawienie szybkości pierwszego i drugiego biletu zgodnie z poniższą tabelą z parametrem -speed
. Dzięki temu uda się zachować równowagę między czasem kodowania a jakością danych wyjściowych.
Wysokość klatki | Prędkość (pierwszy bilet) | Prędkość (druga karta) |
---|---|---|
240 | 4 | 1 |
360 | 4 | 1 |
480 | 4 | 1 |
720 | 4 | 2 |
1080 | 4 | 2 |
1440 | 4 | 2 |
2160 | 4 | 2 |
Na przykład pierwszy ciąg kodujący karty w FFmpeg może zawierać -quality good -speed 4
.
Odstępy w klatce kluczowej
Zalecane jest uwzględnienie maksymalnie 240 klatek wideo pomiędzy klatkami kluczowymi (8 sekund w przypadku treści 30 kl./s). Klatki kluczowe to samowystarczające klatki. Nie wykorzystują żadnych innych klatek, ale zazwyczaj są większe niż inne typy klatek. W przypadku odtwarzania internetowego i mobilnego duże odstępy między klatkami kluczowymi umożliwiają koderowi wybranie najlepszego położenia klatek kluczowych w celu zmaksymalizowania jakości.
W odstępie między klatkami kluczowymi FFmpeg steruje się poleceniem -g
, które wskazuje liczbę klatek. W przypadku 240 klatek będzie to -g 240
.
Rekomendacje dotyczące układania kafelków i wątków
Kafelki dzieli klatkę na kilka kolumn, co nieznacznie obniża jakość, ale przyspiesza kodowanie. Płytki muszą mieć co najmniej 256 pikseli szerokości, więc obowiązuje ograniczenie liczby kafelków.
W zależności od liczby kafelków i rozdzielczości ramki wyjściowej może się przydać więcej wątków procesora. Ogólnie rzecz biorąc, w przypadku bardzo dużej liczby klatek wyjściowych ich wartość jest ograniczona.
Poniżej znajdziesz zalecane ustawienia układania i układania kafelków w różnych rozdzielczościach.
Rozmiar klatki | Liczba kafelków | Liczba wątków |
---|---|---|
320x240 | 1 (-tile-columns 0 ) |
2 |
640 x 360 | 2 (-tile-columns 1 ) |
4 |
640x480 | 2 (-tile-columns 1 ) |
4 |
1280 x 720 | 4 (-tile-columns 2 ) |
8 |
1920 x 1080 | 4 (-tile-columns 2 ) |
8 |
2560x1440 | 8 (-tile-columns 3 ) |
16 |
3840 × 2160 | 8 (-tile-columns 3 ) |
16 |
W FFmpeg liczbę kafelków kontroluje się za pomocą parametru -tile-columns
i liczby wątków przez -threads
. Na przykład kodowanie 640 x 480 używa wiersza poleceń -tile-columns 2 -threads 4
.
Wiersze poleceń FFmpeg
Dzięki zebraniu powyższych rekomendacji można użyć do kodowania treści VP9 tych poleceń FFmpeg.
Pamiętaj, że polecenia pierwszego i drugiego biletu są połączone łańcuchami. Argument -y
w poleceniu 2 przebiegu odpowiada "Tak" gdy FFmpeg prosi o zastąpienie pliku statystyk pierwszego kroku filmem wyjściowym.
Pamiętaj też, że kodowanie o rozdzielczości 1080p służy do kodowania zasobów o rozdzielczości do 1280 x 720. Źródło 4K służy do wyświetlania większej ilości danych.
320 x 240 (24, 25 lub 30 klatek na sekundę)
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
- Plik wejściowy: tears_of_steel_1080p.webm (1920 x 800, 544,88 MB)
- Plik wyjściowy: tos-320x240.webm (320 x 240, 21,73 MB)
640 x 360 (24, 25 lub 30 klatek na sekundę)
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
- Plik wejściowy: tears_of_steel_1080p.webm (1920 x 800, 544,88 MB)
- Plik wyjściowy: tos-640x360.webm (640 x 360, 31,53 MB)
640 x 480 (Niska jakość, 24, 25 lub 30 klatek na sekundę)
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
- Plik wejściowy: tears_of_steel_1080p.webm (1920 x 800, 544,88 MB)
- Plik wyjściowy: tos-640x480-low.webm (640x480, 51,18 MB)
640 x 480 (średnia jakość, 24, 25 lub 30 klatek na sekundę)
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
- Plik wejściowy: tears_of_steel_1080p.webm (1920 x 800, 544,88 MB)
- Plik wyjściowy: tos-640 x 480-medium.webm (640 x 480, 69,27 MB)
1280 x 720 (24, 25 lub 30 klatek na sekundę)
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
- Plik wejściowy: tears_of_steel_1080p.webm (1920 x 800, 544,88 MB)
- Plik wyjściowy: tos-1280x720-24-30fps.webm (1280 x 720, 98,2 MB)
1280 x 720 (50 lub 60 klatek na sekundę)
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
- Plik wejściowy: tears_of_steel_1080p.webm (1920 x 800, 544,88 MB)
- Plik wyjściowy: tos-1280x720-50-60fps.webm (1280 x 720, 157,1 MB)
1920 x 1080 (24, 25 lub 30 klatek na sekundę)
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
- Plik wejściowy: tearsofsteel_4k.mov (3840 x 1714, 6,76 GB)
- Plik wyjściowy: tos-1920x1080-24-30fps.webm (1920 x 1080, 151,51 MB)
1920 x 1080 (50 lub 60 klatek na sekundę)
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
- Plik wejściowy: tearsofsteel_4k.mov (3840 x 1714, 6,76 GB)
- Plik wyjściowy: tos-1920x1080-50-60fps.webm (1920 x 1080, 238,18 MB)
2560 x 1440 (24, 25 lub 30 klatek na sekundę)
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
- Plik wejściowy: tearsofsteel_4k.mov (3840 x 1714, 6,76 GB)
- Plik wyjściowy: tos-2560x1440-24-30fps.webm 2560x1440, 533,54 MB)
2560 x 1440 (50 lub 60 klatek na sekundę)
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
- Plik wejściowy: tearsofsteel_4k.mov (3840 x 1714, 6,76 GB)
- Plik wyjściowy: tos-2560x1440-50-60fps.webm 2560x1440, 664.04 MB)
3840 x 2160 (24, 25 lub 30 klatek na sekundę)
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
- Plik wejściowy: tearsofsteel_4k.mov (3840 x 1714, 6,76 GB)
- Plik wyjściowy: tos-3840x2160-24-30fps.webm 3840x2160, 1,03 GB)
3840 x 2160 (50 lub 60 klatek na sekundę)
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
- Plik wejściowy: tearsofsteel_4k.mov (3840 x 1714, 6,76 GB)
- Plik wyjściowy: tos-3840x2160-50-60fps.webm 3840x2160, 1,56 GB)