Zalecane ustawienia
W tej sekcji znajdziesz rekomendacje dotyczące kodowania VP9 w przypadku różnych popularnych profili:
- Wysoce zoptymalizowane filmy na potrzeby internetu i urządzeń mobilnych (VOD)
- Dystrybucja treści premium (VOD)
- Sport, animacje, treści 10-bitowe (VOD)
- kodowanie transmisji na żywo.
- WebRTC
Wprowadzenie
Podczas kodowania filmu należy wziąć pod uwagę kilka kwestii:
- Czy tworzysz jedną wersję multimediów, czy wiele wersji o różnych szybkościach transmisji bitów i rozdzielczościach?
- Czy tworzysz transmisję wideo na żywo czy pliki wideo na żądanie?
- Jakiego rodzaju media kodujesz – czy zawierają dużo ruchu? Szczegóły? Animacja?
- Czy kodujesz treści pod kątem maksymalnej jakości (np. treści premium) czy szybkości (np. konferencje internetowe)?
Ta sekcja zaczyna się od ustawień podstawowego pliku wideo na żądanie, a następnie zawiera rekomendacje dotyczące wszystkich tych pytań.
Ustawienia podstawowe
Szybkość transmisji bitów kodowania
Podane niżej szybkości transmisji bitów są sugerowane jako wartości podstawowe w przypadku dystrybucji w internecie i na urządzeniach mobilnych. Te sugestie minimalizują szybkość transmisji, zachowując jakość wideo odpowiednią do dystrybucji w internecie i na urządzeniach mobilnych. Można je traktować jako rekomendację „niskiej” szybkości transmisji, która nadal zapewnia rozsądną jakość.
Sugerowane docelowe szybkości transmisji
Rozmiar/liczba klatek | Średnia szybkość transmisji bitów (VOD, kb/s) | Śr. szybkość transmisji bitów (na żywo, kb/s) |
---|---|---|
320x240p przy 24,25,30 kl./s | 150 | 250 |
640x360p przy 24,25,30 kl./s | 276 | 386 |
640x480p przy 24,25,30 kl./s | 512 (LQ), 750 (MQ) | 720 (LQ), 1024 (MQ) |
1280x720p przy 24,25,30 kl./s | 1024 | 1440 |
1280x720p przy 50,60 kl./s | 1800 | 2500 |
1920 x 1080p przy 24,25,30 kl./s | 1800 | 2500 |
1920 x 1080p przy 50,60 kl./s | 3000 | 4200 |
2560x1440p przy 24,25,30 kl./s | 6000 | 8400 |
2560x1440p przy 50,60 kl./s | 9000 | 12600 |
3840x2160p @ 24,25,30 | 12000 | 16800 |
3840x2160p @ 50,60 | 18000 | 25200 |
Ilustracja 2a. Docelowe szybkości transmisji
Ustawienia kodowania VOD
Ustawienia większości typów treści
W przypadku większości typów treści zalecamy korzystanie z trybu ograniczonej jakości (CQ) z limitami przepływności. Większość filmów zawiera mieszankę scen z dużą ilością ruchu (np. sekwencje akcji) i scen z mniejszą liczbą szczegółów (np. rozmowy). Tryb CQ pozwala koderowi zachować rozsądną jakość podczas dłuższych, łatwiejszych scen (bez marnowania bitów), a jednocześnie przydzielać więcej bitów do trudnych sekwencji.
Zalecamy też dopuszczenie zakresu szybkości transmisji bitów od 50% do 150% wartości docelowej, używając wartości jakości wskazanych na wykresie poniżej. Ten tryb wymaga kodowania dwuprzebiegowego. W przypadku rozdzielczości HD i wyższych zalecamy używanie szybszych ustawień, jak wskazano poniżej.
Ustawienia kodera w przypadku kodowania CQ
Wysokość ramy | Jakość docelowa (CQ) | Tryb kodowania |
---|---|---|
240 | 37 | TWO_PASS_MEDIUM |
360 | 36 | TWO_PASS_MEDIUM |
480 | 34 (niska jakość) lub 33 (średnia jakość) | TWO_PASS_MEDIUM |
720 | 32 | TWO_PASS_FAST |
1080 | 31 | TWO_PASS_FAST |
1440 | 24 | TWO_PASS_FAST |
2160 | 15 | TWO_PASS_FAST |
Ilustracja 2b. Zalecane ustawienia CQ
Zalecamy też 240 klatek wideo między klatkami kluczowymi (w przypadku treści o częstotliwości 30 klatek na sekundę daje to 8 sekund). Klatki kluczowe to klatki wideo, które są samowystarczalne. Nie zależą od innych klatek podczas renderowania (szczegółowe wyjaśnienie znajdziesz w sekcji Struktura GOP). W przypadku odtwarzania w internecie i na urządzeniach mobilnych dopuszczamy duże odstępy między klatkami kluczowymi, ponieważ pozwala to koderowi wybrać „najlepsze” umiejscowienie klatek kluczowych w celu zmaksymalizowania jakości.
Przykładowe parametry wiersza poleceń: film o rozdzielczości 640x360
Z powyższych informacji wynika, że w przypadku filmów w rozdzielczości 360p zalecane są te ustawienia:
- poziom CQ wynoszący 36 (patrz rysunek 2b),
- Docelowa szybkość transmisji bitów: 276 kb/s (patrz rysunek 2a)
- Minimalna dozwolona szybkość transmisji bitów to 138 kb/s (50% wartości docelowej).
- Maksymalna dozwolona szybkość transmisji bitów to 414 kb/s (150% wartości docelowej).
- Maksymalny odstęp między klatkami kluczowymi to 240 sekund.
- Dwuprzebiegowy profil „Średni”
Daje to te parametry wiersza poleceń dla bibliotek libvpx i 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
Ustawienia treści premium
W powyższych przykładach użyliśmy dość szybkich ustawień kodowania, aby wydajnie tworzyć strumienie wideo. W przypadku niektórych treści (np. filmów premium) warto jednak poświęcić więcej czasu na kodowanie, aby uzyskać wyższą jakość.
W przypadku treści premium zalecamy te same ustawienia co powyżej, ale z innymi gotowymi ustawieniami, które nakazują koderowi poświęcić więcej czasu na optymalizację pod kątem jakości:
Tryby kodowania treści premium i parametry wiersza poleceń
Wysokość ramy | Tryb kodowania | 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 |
Ilustracja 2c. Tryby kodowania treści premium
Ustawienia treści sportowych i treści z dużą ilością ruchu
W przypadku treści sportowych zalecamy kodowanie VBR. Sporty charakteryzują się dość stałym poziomem ruchu i złożoności, a użycie VBR zapewnia wyższą jakość w okresach mniejszego ruchu niż kodowanie QP.
W przypadku wiersza poleceń główna różnica między trybem QP a VBR polega na tym, że nie określasz poziomu CQ. W przeciwnym razie zalecane ustawienia są takie same.
Przykładowe parametry wiersza poleceń VBR: film o rozdzielczości 640x360
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
Ustawienia animacji i gier
Ustawienia dotyczące treści z szumem lub niskiej jakości
W przypadku treści z szumami zalecamy zwiększenie liczby i siły klatek alt-ref. Alternatywne klatki referencyjne to „niewidoczne” klatki, które nigdy nie są wyświetlane użytkownikowi, ale są używane jako odniesienie podczas tworzenia klatek końcowych (więcej informacji znajdziesz tutaj).
Aby poinstruować VP9, aby używał więcej klatek alt-ref, zalecamy te parametry:
libvpx
--auto-alt-ref=1 --lag-in-frames-16 --arnr-maxframes=5 --arnr-strength=3
FFmpeg
Kodowanie 10-bitowe/HDR
W przypadku kodowania 10-bitowego należy użyć profilu VP9 2. Kodowanie 10-bitowe nie wymaga więcej bitów, więc pozostałe parametry są takie same:
libvpx
--profile=2
FFmpeg
-profile 2
Ustawienia kodowania transmisji na żywo
Transmisja na żywo
Kodowanie na żywo jest zwykle wykonywane jako CBR, co ogranicza możliwość maksymalizacji jakości przez koder. Z tego powodu będziemy używać wyższych szybkości transmisji bitów, jak pokazano na rysunku 2a.
W przypadku kodowania na żywo chcemy też zmaksymalizować liczbę wątków. Aby to zrobić:
- umożliwienie kodekowi VP9 podzielenia filmu na kolumny (które muszą mieć co najmniej 256 pikseli szerokości i muszą być potęgą liczby 2);
- Wskazuje, że VP9 ma używać większej mocy obliczeniowej procesora. W tabeli poniżej znajdziesz rekomendacje dotyczące poszczególnych rozdzielczości.
Zalecenia dotyczące dzielenia na kafelki i wątków
Ustawienia kodera w przypadku kodowania CQ
Rozmiar ramy | Liczba kolumn kafelków | Liczba wątków |
---|---|---|
320x240 | 1 | 2 |
640 x 360 | 2 | 4 |
640x480 | 2 | 4 |
1280 x 720 | 4 | 8 |
1920 x 1080 | 4 | 8 |
2560x1440 | 8 | 16 |
3840 x 2160 | 8 | 16 |
Rysunek 2d. Zalecane kafelkowanie i wątki w przypadku kodowania na żywo
Kodowanie na żywo ustawi też termin na „czas rzeczywisty”, aby zapewnić wydajność, i zadecyduje, że alternatywne klatki odniesienia nie będą uwzględniać przyszłości (co wprowadziłoby opóźnienie):
Na tej podstawie rekomendacje dotyczące transmisji na żywo w jakości 360p są następujące:
- CBR, docelowa szybkość transmisji bitów 386 kb/s (patrz rysunek 2a)
- 2 kolumny kafelków (patrz rysunek 2d)
- 4 wątki (patrz rysunek 2d).
- Wyniki w czasie rzeczywistym
- Brak opóźnienia z powodu alternatywnych klatek (brak opóźnienia klatek)
Daje to te parametry wiersza poleceń dla bibliotek libvpx i 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