Podstawowe kodowanie

Podstawy kompresji wideo

W tej sekcji znajdziesz podstawowe opcje kodowania VP9, w tym rozmiar klatki, podstawową kontrolę szybkości transmisji bitów i jakość.

Jeśli dopiero zaczynasz korzystać z kompresji wideo, obejrzyj ten film. Dowiesz się z niego więcej o kompresji wideo i sposobie jej działania.

Proste kodowanie

Poniższe polecenie FFmpeg konwertuje plik wejściowy na film VP9 z dźwiękiem w Opus. To najprostsze możliwe kodowanie, które używa ustawień domyślnych.

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

To kodowanie FFmpeg używa następujących parametrów wiersza poleceń:

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

FFmpeg określa typ pliku do utworzenia na podstawie nazwy pliku wyjściowego, którego używasz. W tym przykładzie FFmpeg prześle plik WebM, ponieważ poprosiliśmy o output.webm.

Rozdzielczość

Każdy film ma rozmiar klatki (wskazujący szerokość i wysokość piksela). Ten parametr wiersza polecenia FFmpeg pozwala kontrolować rozmiar wyjściowych klatek wideo na potrzeby kodowania VP9:

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

Na przykład to polecenie FFmpeg zwróci film 640 x 480 VP9 WebM.

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

Mniejsze rozdzielczości są niższej jakości, ale większe rozdzielczości wymagają większej przepustowości i większej mocy obliczeniowej do dekodowania. Mogą też nie być obsługiwane na starszych urządzeniach. W przypadku VP9 rozdzielczość 640 x 480 jest uznawana za bezpieczną rozdzielczość na szerokiej gamie urządzeń mobilnych i internetowych.

Szybkość transmisji bitów (szybkość transmisji bitów)

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

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

W przypadku filmów opartych na plikach zalecamy korzystanie z trybu QQ (w przeciwieństwie do transmisji na żywo). 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 to 0–63, a mniejsze liczby to wyższa jakość.

Na przykład poniższe polecenie FFmpeg utworzy plik wideo o średniej rozdzielczości 640 x 480 w trybie CQ, z średnią szybkością transmisji bitów 750 kb/s i maksymalną wartością 33 bitów.

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 zależy od jakości, jaką chcesz osiągnąć, oraz rozdzielczości filmu. Pełny zestaw rekomendacji dotyczących szybkości transmisji bitów w różnych rozdzielczościach znajdziesz tutaj.

Ustawienia jakości i prędkości

Kompresja filmów to kompromis między jakością wyników a ich ilością. Zawsze możesz uzyskać wyższą jakość, ponieważ kodowanie zajmuje więcej czasu, ale czas potrzebny na uzyskanie najwyższej możliwej jakości może być niepraktyczny.

VP9 ma kilka ustawień, które pozwalają zrównoważyć jakość i szybkość:

  • Ustawienie jakości przekazuje koderowi podejście do kompresji filmu. Dostępne tryby są najlepsze, dobre w czasie rzeczywistym.

  • Ustawienia wątków umożliwiają koderowi używanie wielu wątków procesora do kodowania filmu. Te ustawienia mogą nieco obniżać jakość, ale mogą znacznie przyspieszyć kodowanie i dekodowanie.

Te dwa typy ustawień są kontrolowane przez kilka parametrów wiersza poleceń:

FFmpeg
-threads Wskazuje liczbę wątków do użycia podczas kodowania.
-quality Może to być 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. W good i best obowiązują ustawienia dotyczące szybkości (0-4). Jednocześnie 0 ma najwyższą jakość, a 4 – najniższą. Realtime prawidłowe wartości to 5-8; niższe wartości oznaczają wyższą jakość
-tile-columns Tile dzieli film na prostokątne regiony, co umożliwia wielowątkowość w kodowaniu i dekodowaniu. Liczba kafelków jest zawsze 2. 0=1 kafelek, 1=2, 2=4, 3=8, 4=16, 5=32.

To polecenie FFmpeg utworzy plik 640 x 480 o jakości ustawionej na „'good&#39” oraz szybkość 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

Dostępne ustawienia jakości i prędkości mogą się różnić w zależności od rozdzielczości i dostępnej mocy obliczeniowej. Pełny zestaw rekomendacji znajdziesz w następnej sekcji.