Podstawowe kodowanie

Podstawy kompresji wideo

Ta sekcja obejmuje podstawowe opcje kodowania VP9, w tym rozmiar klatki, podstawową kontrolę szybkości transmisji i jakość.

Jeśli dopiero zaczynasz przygodę z kompresją wideo, obejrzyj ten film, aby dowiedzieć się więcej o tym, dlaczego jest ona potrzebna i jak działa.

Proste kodowanie

To polecenie FFmpeg konwertuje plik wejściowy na wideo VP9 z dźwiękiem Opus. Jest to najprostsze możliwe kodowanie, które korzysta z ustawień domyślnych.

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

Kodowanie FFmpeg wykorzystuje te parametry wiersza poleceń:

FFmpeg
-i <filename> Określa nazwę pliku wejściowego
-c:v libvpx-vp9 Informuje FFmpeg, że ma utworzyć film VP9.
-c:a libopus Informuje FFmpeg, że ma utworzyć dźwięk Opus.
output.webm Określanie nazwy pliku wyjściowego

FFmpeg określa typ pliku na podstawie nazwy pliku wyjściowego. W tym przykładzie FFmpeg wygeneruje plik WebM, ponieważ poprosiliśmy o output.webm.

Rozdzielczość

Każdy film ma rozmiar klatki (określający szerokość i wysokość w pikselach). Do kontrolowania rozmiaru klatki wyjściowego filmu w przypadku kodowania VP9 można użyć tego parametru wiersza poleceń FFmpeg:

FFmpeg
-vf scale=<width>x<height> Szerokość i wysokość ramki

Na przykład to polecenie FFmpeg wygeneruje film WebM w formacie VP9 o rozdzielczości 640x480.

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

Mniejsze rozdzielczości mają niższą jakość, ale większe wymagają większej przepustowości i mocy obliczeniowej do dekodowania, a starsze urządzenia mogą ich nie obsługiwać. W przypadku VP9 rozdzielczość 640 x 480 jest uważana za bezpieczną dla szerokiej gamy urządzeń mobilnych i internetowych.

Szybkość transmisji bitów

VP9 obsługuje kilka różnych trybów szybkości transmisji:

tryb
Stały kwantyzator (Q) Umożliwia określenie stałej wartości kwantyzatora; szybkość transmisji będzie się zmieniać.
Ograniczona jakość (CQ) Umożliwia ustawienie maksymalnego poziomu jakości. Jakość może się różnić w ramach parametrów szybkości transmisji
Zmienna szybkość transmisji (VBR) Równoważy jakość i szybkość transmisji bitów w czasie, zachowując ograniczenia dotyczące szybkości transmisji bitów.
Stała szybkość transmisji bitów (CBR) Próbuje utrzymać dość stałą szybkość transmisji, a jakość jest różna.

Tryb CQ jest zalecany w przypadku filmów opartych na plikach (w przeciwieństwie do transmisji na żywo). W przypadku trybu CQ używane są te parametry wiersza poleceń FFmpeg:

FFmpeg
-b:v <arg> Ustawia docelową szybkość transmisji bitów (np. 500 tys. bitów/s).
-minrate <arg>
-maxrate <arg>
Ustawia minimalną i maksymalną szybkość transmisji bitów.
-crf <arg> Ustawia maksymalny poziom jakości. Prawidłowe wartości to 0–63, przy czym mniejsze liczby oznaczają wyższą jakość.

Na przykład to polecenie FFmpeg utworzy plik wideo o średniej jakości i rozdzielczości 640x480 w trybie CQ ze średnią szybkością transmisji 750 kbps i maksymalną jakością ograniczoną do 33.

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

Szybkość transmisji bitów będzie się różnić w zależności od jakości, jaką chcesz uzyskać, i rozdzielczości filmu. Pełny zestaw rekomendacji dotyczących szybkości transmisji przy różnych rozdzielczościach znajdziesz tutaj.

Ustawienia jakości i szybkości

Kompresja wideo to kompromis między jakością wyjściową a czasem potrzebnym na utworzenie pliku. Ogólnie rzecz biorąc, wyższą jakość można uzyskać, poświęcając więcej czasu na kodowanie, ale czas potrzebny do uzyskania najwyższej możliwej jakości może być niepraktyczny.

VP9 oferuje kilka ustawień, które pozwalają zachować równowagę między jakością a szybkością:

  • Ustawienie jakości określa sposób, w jaki enkoder kompresuje film. Dostępne tryby to najlepszy, dobry i czas rzeczywisty.

  • Ustawienia wątków umożliwiają koderowi używanie wielu wątków procesora do kodowania wideo. Te ustawienia mogą nieznacznie obniżyć jakość, ale mogą znacznie zwiększyć szybkość kodowania i dekodowania.

Tymi 2 rodzajami ustawień steruje kilka parametrów wiersza poleceń:

FFmpeg
-threads Wskazuje liczbę wątków do użycia podczas kodowania.
-quality Może mieć wartość good, best lub realtime
-speed Ten parametr ma różne znaczenia w zależności od tego, czy jakość jest ustawiona na good czy realtime. Ustawienia szybkości 0-4 dotyczą treści VOD w przypadku goodbest, przy czym 0 to najwyższa jakość, a 4 – najniższa. Prawidłowe wartości Realtime to 5-8. Im niższa liczba, tym wyższa jakość.
-tile-columns Dzielenie na kafelki dzieli film na prostokątne regiony, co umożliwia wielowątkowość podczas kodowania i dekodowania. Liczba kafelków jest zawsze potęgą liczby 2. 0=1 kafelek, 1=2, 2=4, 3=8, 4=16, 5=32.

To polecenie FFmpeg utworzy plik o wymiarach 640x480 z jakością ustawioną na „good” i szybkością ustawioną na 0 (wysoka jakość):

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

Wybór ustawień jakości i szybkości może się różnić w zależności od rozdzielczości i dostępnej mocy obliczeniowej. Pełny zestaw rekomendacji znajdziesz w następnej sekcji.