Tryby szybkości transmisji VP9

Wstęp

Szczegółowe informacje o trybach transmisji bitów podajemy na stronach Podstawowe kodowanie, ale działają one tylko w trybie QC (Conscon Quality).

W tym dokumencie opisujemy inne praktyczne sposoby dostosowywania szybkości transmisji bitów VP9, które można zoptymalizować pod kątem różnych scenariuszy. W podanych niżej przykładach użyto nazwy FFmpeg.

Kompresja

Technologie kompresji wideo, takie jak VP9, mają na celu zredukowanie ilości danych wymaganych do przedstawienia użytkownikom zrozumiałego obrazu i poczucia ruchu.

Jedną z najważniejszych technik potrzebnych do osiągnięcia tego celu jest kwantyzacja. Kwantyzator matematycznie upraszcza różne elementy cyfrowe obrazu. Może to na przykład zmniejszyć zakres użytych kolorów oraz wykonać działania matematyczne na danych, aby „wygładzić” i „zauważyć” niewielką rozdzielczość w zmniejszonym zakresie kolorów. Istnieje wiele takich funkcji.

Kwantyzację (&"Q") znajdziesz dokładnie w tym artykule w Wikipedii.

W VP9 współczynnik proporcji jest przeprowadzany na współczynnikach przekształcenia. Zmniejsza to wymaganą szybkość transmisji bitów, aby utrzymać postrzeganą jakość przez dodanie kodowania.

W rzeczywistości, gdy występuje więcej kwantyzacji (wyższy numer Q), szczegóły są tracone, a jakość jest niższa, ale do przechowywania klatki potrzeba mniej danych. W większości przypadków koder VP9 osiąga swoje cele szybkości transmisji bitów, zmieniając Q na przestrzeni czasu w zależności od złożoności każdej klatki.

Optymalizacja przypadków użycia

Aby umożliwić użytkownikowi „dostosowanie” formatu VP9 do jego własnych potrzeb, można dostosować równowagę między jakością i szybkością transmisji bitów podczas wstępnego kompresowania za pomocą wielu interfejsów programowania.

Koder ma stopniową zmianę prędkości, jakości i szybkości transmisji bitów.

  • Jeśli użytkownik koncentruje się na jakości, musi być przygotowany na dłuższe czasy kodowania lub na udostępnianie szybszych i bardziej szczegółowych zasobów przetwarzania.

  • Jeśli użytkownik jest ukierunkowany na zapewnienie, że wyjściowy plik zakodowany w standardzie VP9 jest mały, i można go szybko dostarczyć, musi on przygotować się na skrócenie czasu, po którym obraz może być przetwarzany przez kwantyzator. Dzięki temu dane zostaną dokładniej wykonane.

  • Jeśli użytkownik skupia się tylko na szybkości wyświetlania reklam (na przykład w transmisji na żywo lub dwukierunkowej rozmowie wideo), kwantyzacją może być całkowicie ograniczona przez ograniczenia szybkości transmisji danych w sieci (np. "bitrate").

Właściwy wybór będzie zależeć od konkretnego przypadku użycia. Aby ułatwić dostosowanie tej równowagi do Twojego przypadku użycia, VP9 obsługuje prostą konfigurację w 4 trybach transmisji bitów.

Tryby szybkości transmisji VP9

Zacznijmy od głównych trybów szybkości transmisji bitów VP9:

Tryb
Stałe kwantyle (Q) Umożliwia określenie stałej wartości kwantyzatora. Szybkość transmisji bitów może być różna.
Ograniczona jakość (CQ) Pozwala na ustawienie maksymalnego poziomu jakości. Jakość może różnić się od parametrów szybkości transmisji bitów
Zmienna szybkość transmisji bitów (VBR) Równoważy jakość i szybkość transmisji bitów w czasie z ograniczeniami szybkości transmisji bitów
Stała szybkość transmisji bitów (CBR) Próbuje utrzymać stałą szybkość transmisji bitów, mimo że jej jakość jest różna

P

Wykres w trybie Q

Tryb Stałego Quantizera jest dobrym rozwiązaniem w przypadkach, gdy obawy dotyczące rozmiaru pliku i szybkości transmisji bitów mają całkowicie związek z ostateczną jakością.

Przypadki użycia ustawień Q można znaleźć w kinach cyfrowych, cyfrowych studiach montażowych lub aplikacjach, w których wyświetla się cyfrowo, i można je wyświetlać na nośniku fizycznym lub w nieograniczonym czasie – na długo przed rozpoczęciem użytkowania treści, a także po to, aby uzyskać jak najwyższą jakość obrazu.

Optymalizacja szybkości transmisji bitów VP9 Q

Tryb stałego kwantyzatora wymaga minimalnej konfiguracji. Jak sama nazwa wskazuje, tryb Q skupia się na utrzymaniu kwantyzatora na poziomie docelowym i zapewnia kwantyzatorowi odpowiedni przepływ danych do przetworzenia. Wymagana jest tylko jakość docelowa.

Więcej informacji o jakości docelowej znajdziesz w sekcji poświęconej podstawowemu kodowaniu w procesie przetwarzania obrazów (a nie szybkości transmisji bitów).

Do optymalizacji szybkości transmisji w trybie Q użyj tych parametrów wiersza poleceń FFmpeg:

FFmpeg
-b:v 0 Oznaczając szybkość transmisji wideo jako 0, jawnie ustawiamy tryb &Q"
-g <arg> Ustawia odstęp między klatkami kluczowymi (wartość domyślna to 240)
-crf <arg> Ustawia maksymalny poziom jakości. Prawidłowe wartości to 0–63. Im niższa liczba, tym lepsza jakość
-quality good -speed 0 Wartość domyślna i zalecana dla większości aplikacji. best to kolejne narzędzie badawcze z niewielką poprawką w stosunku do -quality good -speed 0
-lossless Tryb bezstratny

Szybkość transmisji w trybie Q : przykłady FFmpeg

Pierwszy przykład to ustawienie trybu skrajnego Q i jest tylko ilustracją. (Nawet w przypadku tych 120-sekundowych klipów ten proces zajmuje kilka godzin, a plik wyjściowy jest zwykle znacznie większy niż oryginalne źródło).

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -g 1 -b:v 0 -crf 0 -quality good \
  -speed 0 -lossless 1 -c:a libvorbis Q_g_1_crf_0_120s_tears_of_steel_1080p.webm.webm

Aby porównać efekt -crf, poniższe przykłady różnią się tylko -crf. Uwaga: wartość -g nie jest określona, więc domyślnie będzie to 240, a w praktyce -crf to 10.

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 0 -quality good \
  -speed 0 -c:a libvorbis Q_crf_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 10 -quality good \
  -speed 0 -c:a libvorbis Q_crf_10_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 63 -quality good \
  -speed 0 -c:a libvorbis Q_crf_63_120s_tears_of_steel_1080p.webm

Wyniki działania tych przykładów różnią się rozmiarem dysku. Jeśli zasada -crf jest ustawiona na 0, plik miał rozmiar 711,8 MB, przy czym -crf miał wartość 10, a rozmiar pliku to 125,3 MB, a zasada -crf63. Mówiąc najprościej, podkreślamy, że obniżyliśmy jakość wynikowego pliku zakodowanego w formacie VP9, zwiększając wartość argumentu -crf. Pełne podsumowanie wszystkich plików wyjściowych znajdziesz w tabeli wyników poniżej.

Porównajmy teraz wpływ różnych ustawień: -g.

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -g 1 -b:v 0 -quality good \
  -speed 0  -c:a libvorbis Q_g_1_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -g 240 -b:v 0 -quality good \
  -speed 0 -c:a libvorbis Q_g_240_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -g 480 -b:v 0 -quality good \
  -speed 0 -c:a libvorbis Q_g_480_120s_tears_of_steel_1080p.webm

Zauważyliśmy, że ustawienie -g 1 powoduje utworzenie bardzo dużego pliku o rozmiarze 25,9 MB. Dla porównania do zmiany wartości -g 240 (bez względu na ustawienie domyślne) dajemy Ci 4,5 MB, a na -g 480 4,4 MB.

Wynik jakości

Jakość dźwięku jest zalecana w przypadku filmów opartych na plikach.

Wykres trybu CQ

W przypadku większości typów treści zalecamy korzystanie z trybu ograniczonej jakości z limitami na sekundę. Większość filmów zawiera zarówno dynamiczne, pełne emocji sceny (np. sekwencje akcji), jak i mniej szczegółowe sceny (np. rozmowy). Tryb QQ pozwala koderowi utrzymać rozsądny poziom jakości w dłuższych, prostszych scenach (bez zbędnych bitów), a przy tym przydzielać więcej bitów na trudne sekwencje.

Musimy jednak ograniczyć ten proces, zapewniając górny zakres. Możemy też ustawić dolny zakres, w którym nawet jeśli obraz będzie czarny, a proces kodowania prawie nic nie trzeba robić, dane te będą prawdopodobnie przesyłane mniej skutecznie, niż mogłoby to być w rzeczywistości. Jednak w rezultacie nawet czerń nie jest wystarczająco skompresowana i wygląda „bardzo czarny&quot”.

Dodatkowo musisz też ustawić próg ilościowy. W programie VP9 kwantowy poziom może być zmieniany z 0 na 63.

W trybie CQ używane są te parametry wiersza poleceń FFmpeg:
FFmpeg
-b:v <arg> Ustawia docelową szybkość transmisji bitów (np.500 tys.)
-minrate <arg>
-maxrate <arg>
Ustawia minimalną i maksymalną szybkość transmisji bitów.
-crf <arg> Ustawia maksymalny poziom jakości. Prawidłowe wartości: od 0 do 63; niższe wartości oznaczają wyższą jakość.
Tryb szybkości transmisji bitów CQ – przykłady: FFmpeg

Pierwszy przykład zawiera dość szerokie ograniczenie. W porównaniu z powyższymi przykładami zaobserwowaliśmy jednak, że wymusza on prędkość transmisji z wyższym zakresem, a jakość danych wyjściowych jest znacznie wyższa. Plik jest znacznie większy.

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1000k -maxrate 4000k -crf 10  -c:a libvorbis \
  CQ_4000_1000_crf_10_120s_tears_of_steel_1080p.webm

Rozmiar pliku wyjściowego w tej instancji wynosił 20,2 MB na dysku – jest to znacznie mniejsze niż w przypadku trybu Q w przykładach powyżej.

W przeciwieństwie do następnego przykładu ograniczyliśmy szybkość transmisji bitów do znacznie ściślej określonego zakresu.

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -crf 10  -c:a libvorbis \
  CQ_2500_1500_crf_10_120s_tears_of_steel_1080p.webm

W tym przypadku rozmiar pliku wyjściowego wynosił 24,1 MB, a w okresach wysokiego złożoności i animacji ruch wideo był wyraźnie niższy w porównaniu z poprzednim przykładem.

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 1000k \
  -minrate 750k -maxrate 1400k -crf 10  -c:a libvorbis \
  CQ_1400_750_crf_10_120s_tears_of_steel_1080pp.webm

W ostatnim przykładzie rozmiar danych wyjściowych był znacznie mniejszy – spadł do 13,2 MB na dysku.

VBR

Tryb VBR jest zalecany w przypadku strumieniowego przesyłania filmów na żądanie z treściami w dużym formacie (np. sport). Jest to dobre rozwiązanie dla dostarczania opartego na HTTP.

Wykres trybu VBR

W modelu VBR sceny akcji mogą być kodowane z większą szybkością transmisji bitów niż prostsze sceny, które są zgodne z klatką kluczową.

W przypadku dużych modeli przesyłania strumieniowego korzyści z VBR mogą się przyczynić do zwiększenia zasięgu zarówno w zakresie dystrybucji, jak i infrastruktury. Gdy wiele strumieni VBR jest dostarczanych przez tę samą infrastrukturę, może to być korzystne dla wszystkich użytkowników systemu.

V9 VBR jest też zalecany w przypadku kodowania sportowego i innych treści o dużym natężeniu ruchu. W przypadku materiałów o dużej złożoności VBR osiąga wyższą jakość w okresach mniejszego ruchu.

W trybie VBR używane są te parametry wiersza poleceń FFmpeg:
FFmpeg
-quality good Jeśli ta opcja jest dostępna, FFmpeg będzie uwzględniać następne ustawienie -speed
-speed <arg> VIDEO ON DEMAND Prawidłowe wartości to 0–4, gdzie 0 to najwyższa jakość, a 4 – najniższe. (Przy transmisjach na żywo zakres wynosi 5–8 – patrz CBR poniżej).
Tryb szybkości transmisji VBR: przykłady FFmpeg
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 0  -c:a libvorbis \
  VBR_good_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 5  -c:a libvorbis \
  VBR_good_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 8  -c:a libvorbis \
  VBR_good_8_120s_tears_of_steel_1080pp.webm

CBR

W przypadku transmisji na żywo z VP9 jest zalecany tryb stałej transmisji bitów (CBR).

Wykres trybu CBR

CBR zasadniczo ustawia górną szybkość transmisji bitów jako &"twardy sufit&&quot. Oznacza to, że proces kodowania nie może wygenerować danych z częstotliwością, której sieć nie może obsłużyć.

Na przykład w przypadku transmisji w czasie rzeczywistym (wideokonferencji) ważne jest, aby aplikacja kodująca nie wypełniała sieci większej ilości danych niż może przesłać. W takim przypadku problemy z synchronizacją dźwięku/obrazu lub zablokowanych klatek znacznie wpływają na wrażenia użytkownika, a niekoniecznie zmniejszają wydajność kompresji. Jeśli określisz twardy sufit, VP9 obniży jakość, gdy ten sufit zostanie osiągnięty.

W trybie CBR używane są te parametry wiersza poleceń FFmpeg:
FFmpeg
-quality realtime Jeśli ta opcja jest dostępna, FFmpeg będzie uwzględniać następne ustawienie -speed
-speed <arg> Prawidłowe wartości dla transmisji na żywo to od 5 do 8. 5 oznacza najwyższą jakość, a 8 – najniższą. (w przypadku wideo na żądanie wynosi od 0 do 4). Zobacz VBR powyżej).
-minrate <arg>
-maxrate <arg>
Ustawia minimalną i maksymalną szybkość transmisji **** W trybie CBR musi mieć ustawioną taką samą wartość -b:v.**

W prostych słowach korygujemy docelową, minimalną i maksymalną szybkość transmisji bitów na tę samą wartość i informujemy kwantyzator, że operacje są podatne na czas.

Tryb szybkości transmisji CBR: przykłady FFmpeg

Poniższe przykłady pokazują ustawienie szybkości transmisji bitów 2 Mb/s i 500 kb/s:

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 0 -c:a libvorbis \
  CBR_2000_realtime_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 5 -c:a libvorbis \
  CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 8 -c:a libvorbis \
  CBR_2000_realtime__8_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 0 -c:a libvorbis \
  CBR_500_realtime__0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 5 -c:a libvorbis \
  CBR_500_realtime_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 8 -c:a libvorbis \
  CBR_500_realtime_8_120s_tears_of_steel_1080p.webm

Wyniki

Każdy z tych kodowań został wykonany w systemie Ubuntu Linux z następującymi parametrami:

  • Procesor: 4x Intel(R) Core(TM) i5-6500 przy 3,20 GHz
  • Pamięć (RAM): 8060 MB (wykorzystano 1492 MB)
  • Grafika: Intel HD Graphics 530 (Skylake GT2)
  • System operacyjny: Ubuntu 16.04 LTS

Plik źródłowy we wszystkich przypadkach 1 minuta, dwadzieścia sekund (1:20) klip został przerwany Tears Of Steel.

Plik Min. kodowanie Rozmiar pliku na dysku
Q_g_1_crf_0_120s_tears_of_steel_1080p.webm 81 1,06 GB
Q_crf_0_120s_tears_of_steel_1080p.webm 131 711,8 MB
Q_crf_10_120s_tears_of_steel_1080p.webm 118 125,3 MB
Q_crf_63_120s_tears_of_steel_1080p.webm 27 4,5 MB
Q_g_1_120s_tears_of_steel_1080p.webm 51 25,9 MB
Q_g_240_120s_tears_of_steel_1080p.webm 28 4,5 MB
Q_g_480_120s_tears_of_steel_1080p.webm 10 4,4 MB
CQ_4000_1000_crf_10_120s_tears_of_steel_1080p.webm 11 20,2 MB
CQ_2500_1500_crf_10_120s_tears_of_steel_1080p.webm. 9 24,1 MB
CQ_1400_750_crf_10_120s_tears_of_steel_1080p.webm. 50 13,2 MB
VBR_dobrze_0_120s_tears_e_stela_1080p.webm 3 23,4 MB
VBR_good_5_120s_tears_of_steel_1080p.webm 4 23,9 MB
VBR_dobry_8_120s_tears_of_steel_1080p.webm 1 23,9 MB
CBR_2000_czas_rzeczywisty_0_120s_steary_1080p.webm 98 21MB
CBR_2000_czas_rzeczywisty_5_120s_tears_of_steel_1080p.webm 2 24,8 MB
CBR_2000_czas_rzeczywisty_8_120s_tears_of_steel_1080p.webm 1 21MB
CBR_500_czas_rzeczywisty_0_120s_steary_1080p.webm 73 6,2 MB
CBR_500_czas_rzeczywisty_5_120s_steary_1080p.webm 1 8,5 MB
CBR_500_czas_rzeczywisty_8_120s_steary_1080p.webm 1 7,1 MB

Zwróć uwagę, że ustawienie wartości -speed powyżej 5 zmienia szybkość przetwarzania VP9. Mimo że jest to znaczny wzrost (z uwagi na mocny i skuteczny wpływ na szybkość transmisji bitów), element VP9 nadal jest w stanie generować bardzo niską rozdzielczość 1080p, ale lepiej sprawdza się na mniejszych urządzeniach mobilnych niż na większych ekranach.

Uwagi dotyczące przypadków użycia ze skalowaniem (zmiana rozmiaru)

Tryby transmisji VP9 nie są oczywiste izolowane i można je łączyć z wieloma innymi argumentami oraz parametrami w celu konkretnego przypadku użycia. Jednym z typowych zastosowań może być zmiana rozmiaru wyjściowego wideo i skierowanie reklamy na konkretne urządzenie.

Typowym przykładem jest zmiana strumienia HD na wyjście SD. To również może mieć duży wpływ na czas przetwarzania oraz szybkość wyjściową. W sytuacji, gdy dwa polecenia FFmpeg są identyczne, samo dostosowanie rozmiaru wyjściowego filmu spowoduje zmianę rozmiaru wynikowego pliku, a w rzeczywistości jego szybkość transmisji bitów.

Aby to podkreślić, w każdym z trybów szybkości transmisji bitów wprowadziliśmy punkt środkowy i dodaliśmy tylko parametry odskalowania.

Tryb Q
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 10 -quality good \
  -speed 0 -vf scale=640x480 -c:a libvorbis 640x480_Q_crf_10_120s_tears_of_steel_1080p.webm
Tryb kontroli jakości
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -crf 10 -vf scale=640x480 -c:a libvorbis \
  640x480_CQ_crf_0_120s_tears_of_steel_1080p.webm
Tryb VBR
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 5 -vf  scale=640x480 \
  -c:a libvorbis 640x480_VBR_good_5_120s_tears_of_steel_1080p.webm
Tryb CBR
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 5 -vf  scale=640x480 \
  -c:a libvorbis 640x480_CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm

Tabela wyników skalowania

Plik Min. kodowanie Rozmiar pliku na dysku
640 x 480_Q_crf_10_120s_tears_of_steel_1080p.webm 5 3,4 MB
640 x 480_CQ_crf_0_120s_tears_of_steel_1080p.webm 2 22,4 MB
640x480_VBR_dobry_5_120s_tears_of_steel_1080p.webm 1 22,6 MB
640 x 480_CBR_2000_rzeczywiste_5_120s_tears_of_steel_1080p.webm 4 23MB

Dla ułatwienia przedstawiamy te same polecenia FFmpeg z wcześniejszych przykładów, ale bez skalowania:

Plik Min. kodowanie Rozmiar pliku na dysku
Q_crf_10_120s_tears_of_steel_1080p.webm 56 126MB
CQ_2500_1500_crf_10_120s_tears_of_steel_1080p.webm. 9 24,1 MB
VBR_good_5_120s_tears_of_steel_1080p.webm 4 23,9 MB
CBR_2000_czas_rzeczywisty_5_120s_tears_of_steel_1080p.webm 1 24,8 MB

Jak widać, w przypadku każdego z nich nastąpił znaczny spadek rozmiaru plików wyjściowych. Poza tym w większości przypadków skrócono czas kodowania, a w trybie Q udało się go wydłużyć. Skompresowanie filmu wymaga więcej wysiłku, więc nawet jeśli przewidywany rozmiar pliku wyjściowego jest mniejszy (w przypadku trybu Q), a tak się dzieje, może to wydłużyć czas potrzebny na utworzenie pliku wyjściowego. Nie zakładaj, że w procesie kodowania cały czas pojawia się mniejszy plik.

Odskalowanie oraz zmniejszenie szybkości transmisji bitów w kombinacji

Po raz ostatni porównujemy z poniższymi przykładami nagrania CQ, VBR i CBR, ale tym razem ograniczamy docelową szybkość transmisji bitów do poziomu 500 kb/s, czyli około jednej czwartej (w zależności od skalowania rozmiaru obrazu).

Tryb kontroli jakości
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 350k -maxrate 550k -crf 10 -vf  scale=640x480 -c:a libvorbis \
  640x480_CQ_crf_0_120s_tears_of_steel_1080p.webm
Tryb VBR
ffmpeg -i "120s_tears_of_steel_1080p.webm" -c:v vp9  -b:v 500k \
  -minrate 350k -maxrate 500k -quality good -speed 5 -vf scale=640x480 -c:a libvorbis \
  640x480_VBR_good_5_120s_tears_of_steel_1080p.webm
Tryb CBR
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 5 -vf scale=640x480 -c:a libvorbis \
  640x480_CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm

Tabela wyników przeskalowania i obniżenia docelowej szybkości transmisji bitów

Plik Min. kodowanie Rozmiar pliku na dysku
640 x 480_CQ_500_crf_0_120s_tears_of_steel_1080p.webm 1 7MB
640x480_VBR_500_good_5_120s_tears_of_steel_1080p.webm 1 7MB
640 x 480_CBR_500_czas_rzeczywisty_5_120s_tears_of_steel_1080p.webm 1 7,6 MB

Jak widać, czas kodowania został jeszcze skrócony.