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 good i best , 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.