Wróć do bloga
27 października 2026Sergei Solod23 min czytania

MP4 czy WebM w 2026 roku: jak wybrać format wideo, kodek i jakość kompresji

Jaki format wideo sprawdzi się na stronach internetowych i urządzeniach mobilnych? Praktyczne porównanie MP4, WebM, H.264, HEVC, VP9 i AV1, rzeczywiste eksperymenty z kompresją w FFmpeg, kompromisy jakościowe CRF 20–32, presety x264 oraz podejście do dostarczania wideo, w którym priorytetem jest zgodność.

Kompresja wideoH.264MP4WebMFFmpeg

Jeśli tworzysz filmy, konwertujesz istniejące pliki lub przygotowujesz materiały wideo na stronę internetową, jedną z najważniejszych decyzji jest wybór formatu i ustawień kompresji. Najmniejszy możliwy plik nie musi być najlepszy. Powinien również niezawodnie odtwarzać się w przeglądarkach i na smartfonach, być sprawnie dekodowany oraz zachowywać jakość obrazu odpowiednią do zastosowania.

Przeanalizowałem MP4, WebM, H.264, H.265/HEVC, VP9, AV1, FFmpeg, presety kodera x264, zgodność z przeglądarkami, sprzętowe dekodowanie na urządzeniach mobilnych oraz metody pomiaru jakości wideo. Przeprowadziłem też praktyczne eksperymenty z kompresją: zakodowałem ten sam materiał źródłowy z różnymi wartościami CRF, a następnie porównałem wyniki wizualnie i za pomocą obiektywnych pomiarów.

Ostatecznie postanowiłem wybrać MP4 z H.264, gdy jeden plik wideo ma działać na możliwie najszerszej gamie przeglądarek, telefonów i zewnętrznych aplikacji.

W przypadku krótkich filmów przeznaczonych głównie do oglądania na urządzeniach mobilnych, gdzie szybkie ładowanie i małe pliki są ważniejsze niż zachowanie każdego drobiazgu, wybrałem x264 CRF 30. Podczas normalnego odtwarzania nie dostrzegłem istotnej różnicy między CRF 22 a 30, nawet na dużym monitorze komputera.

Trzeba jednak poczynić ważne zastrzeżenie: CRF 30 nie jest moją rekomendacją dla filmów fabularnych, produkcji wideo wysokiej klasy ani materiałów, w których kluczowe znaczenie ma maksymalna wierność obrazu. W takich zastosowaniach lepszym punktem wyjścia może być znacznie ostrożniejsza wartość, często około CRF 20. Nie przeprowadziłem porównywalnych badań filmów pełnometrażowych ani wysokiej jakości materiałów filmowych, więc należy traktować te ustawienia jako propozycje do osobnego przetestowania.

W artykule wyjaśniam techniczne podstawy tej decyzji, rzeczywiste wyniki kompresji i ograniczenia eksperymentu oraz sposób wyboru właściwego formatu i jakości wideo do własnego projektu.

1. Kontener i kodek wideo to dwie różne rzeczy

Przed porównaniem MP4 i WebM trzeba zrozumieć różnicę między kontenerem a kodekiem.

Kontener przechowuje w jednym pliku wideo, dźwięk, znaczniki czasu i metadane. Kodek wideo określa sposób kompresji i dekodowania klatek obrazu.

Przykładowo MP4 może zawierać obraz zakodowany jako H.264, HEVC lub AV1. Mimo identycznego rozszerzenia pliku takie połączenia różnią się charakterystyką kompresji i wymaganiami sprzętowymi.

ElementPrzykładyZadanie
Kontener wideoMP4, WebM, MOV, MKVŁączy obraz, dźwięk i dane czasowe
Kodek wideoH.264, HEVC, VP9, AV1Kompresuje i dekompresuje klatki wideo
Kodek audioAAC, Opus, MP3Kompresuje i dekompresuje dźwięk
Koder wideox264, x265, SVT-AV1, libvpx-vp9Realizuje kompresję wideo

Zmiana nazwy pliku z .webm na .mp4 nie konwertuje kodeka wideo. Podobnie umieszczenie AV1 w kontenerze MP4 nie sprawi, że film zadziała na urządzeniu, które nie obsługuje dekodowania AV1.

Oceniając zgodność wideo, zawsze bierz pod uwagę pełny zestaw: kontener, kodek wideo, kodek audio, profil kodeka, głębię bitową i środowisko odtwarzania.

2. MP4 czy WebM: co lepiej sprawdza się na stronach internetowych?

Zarówno MP4, jak i WebM to pełnoprawne nowoczesne kontenery wideo. Żaden nie jest bezwzględnie lepszy, ponieważ ich praktyczne właściwości zależą od zastosowanych kodeków.

MP4 z H.264: najszersza zgodność w praktyce

MP4 z obrazem H.264 i dźwiękiem AAC od lat wyróżnia się wyjątkowo szeroką zgodnością. Obsługują go popularne przeglądarki komputerowe i mobilne, systemowe odtwarzacze oraz wiele aplikacji innych producentów.

Połączenie to jest też powszechnie obsługiwane przez sprzętowe dekodery wideo w smartfonach i komputerach. W porównaniu z dekodowaniem programowym dekodowanie sprzętowe może zmniejszać obciążenie CPU, poprawiać wydajność odtwarzania i ograniczać zużycie energii.

Główną wadą jest efektywność kompresji. Nowsze kodeki często zapewniają podobną jakość postrzeganą przez widza przy niższym bitrate.

Mimo to H.264 pozostaje doskonałym wyborem, gdy niezawodne odtwarzanie jest ważniejsze niż uzyskanie najmniejszego możliwego pliku.

WebM z VP9: skuteczna kompresja i dobra obsługa w przeglądarkach

WebM zwykle zawiera wideo VP8, VP9 lub AV1, a dźwięk jest najczęściej kodowany za pomocą Opus albo Vorbis.

VP9 często kompresuje skuteczniej niż H.264 przy porównywalnej jakości obrazu. Jest szeroko obsługiwany przez współczesne przeglądarki, w tym aktualne wersje Safari.

Stwierdzenie, że Safari w ogóle nie obsługuje WebM lub VP9, byłoby nieprawdziwe. Zgodność przeglądarek z tymi technologiami znacznie się poprawiła.

Ważniejszym ograniczeniem jest obsługa poza przeglądarką. Natywne aplikacje systemowe, starsze urządzenia i oprogramowanie innych producentów mogą radzić sobie z WebM mniej konsekwentnie niż ze standardowym MP4/H.264.

W aplikacji działającej wyłącznie w przeglądarce, gdzie można kontrolować możliwości odtwarzania, WebM jest mocnym kandydatem. Jeśli jednak użytkownicy mogą pobierać filmy i otwierać je w dowolnych programach, MP4/H.264 pozostaje bardziej przewidywalny.

Różnice w praktyce

WymaganieMP4 + H.264WebM + VP9
Odtwarzanie w nowoczesnych przeglądarkachDoskonałeBardzo dobre
Obsługa starszych przeglądarek i urządzeńZwykle szerszaBardziej zależna od środowiska
Zgodność pobranych plikówZwykle lepszaMniej przewidywalna w aplikacjach natywnych
Efektywność kompresjiDobraCzęsto lepsza
Dekodowanie sprzętoweBardzo rozpowszechnioneCzęste, ale zależne od urządzenia
Najlepsze zastosowanieJeden plik o szerokiej zgodnościEfektywne dostarczanie przez stronę do znanych klientów

Najważniejsze pytanie nie brzmi, czy WebM jest dobrym formatem. Chodzi o to, czy korzyści z kompresji uzasadniają kompromisy dotyczące zgodności w twoim konkretnym środowisku.

3. H.264, H.265, VP9 czy AV1: który kodek wybrać?

Każdy z głównych kodeków wideo oferuje inny kompromis między efektywnością kompresji, kosztem kodowania, wsparciem sprzętowym, zgodnością oprogramowania i warunkami licencyjnymi.

KodekEfektywność kompresjiZgodność w praktyceTypowe zastosowanie
H.264 / AVCDobraDoskonałaTypowe wideo internetowe, odtwarzanie mobilne, pobieranie
H.265 / HEVCZwykle lepsza niż H.264Zależna od środowiskaZgodne urządzenia Apple, kontrolowane środowiska, wideo o wysokiej rozdzielczości
VP9Zwykle lepsza niż H.264Bardzo dobra w nowoczesnych przeglądarkachDostarczanie filmów przez przeglądarkę
AV1Potencjalnie doskonałaRośnie, ale starsze urządzenia mają ograniczeniaNowoczesny streaming i zgodne urządzenia

To porównanie jakościowe, a nie uniwersalny ranking bitrate. Rzeczywista efektywność zależy od treści filmu, implementacji kodera, docelowej jakości, presetu kodowania i metody pomiaru.

H.264: dojrzały, szybko dekodowany i szeroko obsługiwany

H.264 jest bardzo dobrze zoptymalizowany i obsługiwany przez ogromną liczbę urządzeń oraz programów. Jego dojrzałość to zaleta, gdy film ma odtwarzać się niezawodnie bez specjalnej aplikacji.

Jego słabą stroną jest to, że nowsze kodeki często kompresują wideo skuteczniej. H.264 wiąże się również z kwestiami patentowymi i licencyjnymi, które należy rozważyć w odpowiednich scenariuszach dystrybucji komercyjnej.

H.265 / HEVC: lepsza kompresja kosztem części zgodności

HEVC może istotnie obniżyć bitrate względem H.264 przy podobnej jakości. Jest szczególnie atrakcyjny dla materiałów w wysokiej rozdzielczości i środowisk, w których zgodność urządzeń pozostaje pod kontrolą.

Wiele urządzeń Apple bardzo dobrze obsługuje HEVC. Jednak wsparcie w przeglądarkach i zewnętrznych aplikacjach różni się zależnie od systemu operacyjnego i zainstalowanych komponentów dekodujących. Znaczenie mają też licencje.

HEVC może być świetnym wyborem, ale nie uczyniłbym go automatycznie jedynym formatem filmów do pobrania na ogólnodostępnej stronie.

VP9: praktyczna otwarta alternatywa

VP9 zapewnia dobrą kompresję i szeroką zgodność z nowoczesnymi przeglądarkami. To atrakcyjny wybór, gdy filmy pozostają w przeglądarce, a środowisko odtwarzania jest przewidywalne.

W moim zastosowaniu podstawową wadą była niepewność pojawiająca się po pobraniu filmu lub otwarciu go w natywnej aplikacji, która może nie obsługiwać WebM lub VP9 w sposób niezawodny.

AV1: znakomita efektywność, ale niepełne wsparcie sprzętowe

AV1 jest jednym z najbardziej obiecujących współczesnych kodeków wideo. Potrafi zapewniać znaczne oszczędności bitrate w porównaniu ze starszymi kodekami, a obsługa sprzętowego dekodowania stale się poszerza.

Starsze urządzenia mogą jednak nie mieć dekodera AV1 albo wymagać dekodowania programowego. Przy wysokiej rozdzielczości może ono bardziej obciążać procesor i baterię oraz powodować problemy z odtwarzaniem na słabszym sprzęcie.

Jeśli kontrolujesz środowisko odtwarzania, warto poważnie rozważyć AV1. Jeśli jeden plik ma działać na starych i nowych urządzeniach oraz w zwykłych zewnętrznych odtwarzaczach, H.264 pozostaje bezpieczniejszym wyborem domyślnym.

Przewodnik MDN po kodekach wideo zawiera przydatne informacje o tych technologiach i wymaganiach dotyczących obsługi w przeglądarkach.

4. Jeden format wideo czy kilka wersji?

To jedna z najważniejszych decyzji architektonicznych dotyczących dostarczania wideo.

Jeśli można udostępniać kilka wersji, strona może wysyłać AV1 lub VP9 na zgodne urządzenia, a w pozostałych przypadkach korzystać z H.264. Pozwala to zwiększyć efektywność kompresji przy zachowaniu szerokiego zakresu obsługiwanych urządzeń.

Utrzymywanie kilku wersji oznacza jednak dodatkową złożoność kodowania, przechowywania, buforowania, weryfikacji i wyboru odpowiedniego pliku do odtwarzania.

Jeśli z każdego materiału źródłowego potrzebujesz dokładnie jednego gotowego pliku wideo, często lepiej postawić przede wszystkim na zgodność.

Wybrałem MP4/H.264, ponieważ chciałem mieć jeden plik działający w głównych przeglądarkach, na smartfonach i w typowych scenariuszach pobierania filmów, bez potrzeby dostarczania alternatywnych formatów.

Nie twierdzę przez to, że MP4/H.264 oferuje najlepszą kompresję. To decyzja, w której przewidywalność odtwarzania jest ważniejsza od potencjalnych oszczędności wynikających z nowszego kodeka.

5. Dlaczego wideo mobilne wymaga innych priorytetów

Kompresję wideo trzeba dostosować do tego, jak materiał będzie faktycznie oglądany.

Krótki klip oglądany głównie na smartfonie ma inne wymagania niż film fabularny wyświetlany na dużym telewizorze. W pierwszym przypadku szybkie ładowanie i oszczędność transferu danych mogą być ważniejsze niż subtelne detale obrazu. W drugim najważniejsza może okazać się jakość obrazu.

Mniejsze pliki krótkich filmów przeznaczonych na urządzenia mobilne dają kilka korzyści:

  • Przed rozpoczęciem odtwarzania trzeba przesłać mniej danych.
  • Przy ograniczonej szybkości połączenia pobieranie może zakończyć się wcześniej.
  • Plik zajmuje mniej miejsca w pamięci urządzenia.
  • Użytkownicy zużywają mniej danych mobilnych.
  • Przy niższym bitrate odtwarzanie może lepiej znosić ograniczoną przepustowość.

Jednak mniejszy plik nie gwarantuje, że film nigdy nie będzie się buforował ani zacinał. Znaczenie mają też wahania jakości sieci, szczytowy bitrate, działanie serwera, buforowanie przez odtwarzacz i wydajność dekodowania na urządzeniu.

Zgodność z urządzeniami mobilnymi zależy nie tylko od rozszerzenia pliku. Liczą się sprzętowe dekodowanie, profil i poziom kodeka, głębia bitowa, podpróbkowanie chrominancji, rozdzielczość, liczba klatek na sekundę i szczytowy bitrate. Film wyświetlany z szerokością 390 pikseli CSS może zajmować znacznie więcej fizycznych pikseli na ekranie telefonu o dużej gęstości pikseli. Dlatego oglądanie klatki zmniejszonej do 390 pikseli nie musi odpowiadać oglądaniu oryginalnego filmu na takim telefonie. Testuj na rzeczywistych urządzeniach i w prawdziwych warunkach odtwarzania.

CRF steruje jakością, a nie narzuca ścisłego maksymalnego bitrate. Nawet stosunkowo mały plik zawierający złożony materiał może mieć fragmenty o bardzo wysokim chwilowym bitrate. Jeśli kluczowe jest niezawodne odtwarzanie przez wyjątkowo wolne łącza, rozważ jawne ograniczenia bitrate lub VBV, odpowiednie limity rozdzielczości i testy w realistycznych warunkach sieciowych.

Podstawowa zasada jest prosta: optymalizuj pod kątem zamierzonego sposobu oglądania, a nie abstrakcyjnego celu osiągnięcia maksymalnej jakości.

6. Jak działa CRF w x264: niższy oznacza lepszą jakość, wyższy — mniejszy plik

Po wyborze H.264 kolejnym wyzwaniem jest ustalenie, jak mocno skompresować materiał.

W x264 parametr Constant Rate Factor, czyli CRF, pozwala wyważyć zachowanie szczegółów obrazu i rozmiar pliku.

Niższa wartość CRF zazwyczaj oznacza lepszą jakość i większe pliki. Wyższa zwykle daje mniejsze pliki kosztem większych strat kompresji.

CRF nie wyznacza konkretnego bitrate ani dokładnej wielkości pliku. Koder przydziela bity zależnie od materiału źródłowego, dlatego prosta scena i scena pełna detali mogą przy tym samym CRF dawać bardzo różne rozmiary plików.

CRF nie określa też podstawowej zgodności z dekoderem. Dwa poprawnie zakodowane filmy H.264 przy CRF 22 i CRF 30 mogą mieć identyczny kodek, profil, poziom, format pikseli, wymiary i liczbę klatek na sekundę.

Różnica dotyczy przede wszystkim stopnia kompresji, jakości i charakterystyki bitrate.

Co ważne, wartości CRF nie są bezpośrednio porównywalne między różnymi implementacjami kodeków. CRF 30 w x264 nie odpowiada tej samej jakości wizualnej co CRF 30 w koderze AV1.

7. Mój rzeczywisty eksperyment z kompresją: CRF od 22 do 32

Chciałem sprawdzić, jak mocno mogę skompresować film, zanim różnica stanie się istotna przy normalnym oglądaniu.

Wykorzystałem jeden krótki, wcześniej skompresowany film i przygotowałem wersje H.264 z wartościami CRF 22, 24, 26, 28, 29, 30, 31 i 32.

Zachowałem najważniejsze właściwości filmu, w tym rozdzielczość, częstotliwość klatek, czas trwania i liczbę klatek. Pozostałe ustawienia kodera były spójne, aby dało się ocenić wpływ samej zmiany CRF.

Wyniki pokazały duże różnice w rozmiarach plików.

CRFPrzybliżony rozmiar względem oryginałuCo to oznacza
2263%Ostrożniejsza kompresja i lepsze zachowanie szczegółów
2449%Mniejszy plik przy umiarkowanej dodatkowej utracie jakości
2638%Dalsze oszczędności przy zachowaniu wielu detali
2830%Niewielki plik o stosunkowo dużym podobieństwie do źródła
2926%Bardziej agresywna kompresja
3023%Mój preferowany kompromis dla testowanego materiału
3121%Dalsza oszczędność przy mniejszej wierności źródłu
3219%Najmniejszy testowany plik i największa zmierzona utrata jakości

Te wartości procentowe dotyczą przetestowanego materiału i nie należy traktować ich jako typowych oszczędności dla dowolnych filmów. Procenty w tabeli zaokrąglono niezależnie; dokładne względne oszczędności należy obliczać na podstawie rzeczywistych rozmiarów plików, a nie przez dzielenie wartości po zaokrągleniu.

Największym zaskoczeniem było to, że podczas normalnego odtwarzania nie widziałem istotnej różnicy między CRF 22 i CRF 30, nawet na dużym monitorze komputera.

Sprawdziłem też mocniej skompresowane wersje, w tym CRF 32, i podczas zwykłego oglądania tego konkretnego klipu również nie zauważyłem znaczącej różnicy.

To spostrzeżenie było istotne, ponieważ filmy przeznaczono przede wszystkim na mniejsze ekrany urządzeń mobilnych. Skoro obniżenie jakości nie przeszkadzało mi nawet na monitorze komputera, nie widziałem powodu, by płacić znacznym wzrostem wielkości pliku za detale, które nie poprawiały mojego sposobu oglądania.

Była to jednak subiektywna obserwacja dotycząca jednego rodzaju materiału źródłowego. Nie dowodzi, że wszyscy widzowie, wszystkie smartfony i wszystkie filmy dadzą taki sam rezultat. Ekrany mobilne o dużej gęstości pikseli i oglądanie z niewielkiej odległości nadal mogą ujawniać artefakty, zwłaszcza w drobnych szczegółach lub gradientach.

8. Obiektywne pomiary potwierdziły rzeczywistą utratę jakości

Brak widocznej różnicy podczas odtwarzania nie oznacza, że dwa filmy są matematycznie identyczne.

Porównałem też zakodowane wersje za pomocą obiektywnych miar jakości obrazu. Wraz ze wzrostem CRF podobieństwo do materiału źródłowego malało.

W porównaniu z konsekwentnym zmniejszeniem rozdzielczości, które miało przybliżać warunki wyświetlania na ekranie mobilnym o dużej gęstości pikseli, reprezentatywne wyniki SSIM wynosiły:

CRFPrzybliżony SSIMRozmiar względem CRF 28
220.99342.13×
280.98691.00×
300.98370.79×
320.97950.63×

Tendencja jest wyraźna: mocniejsza kompresja zmniejszała zmierzoną wierność zakodowanego obrazu. Dokładne oględziny pokazały również subtelne różnice w cienkich liniach i fakturach.

Mimo to w normalnym oglądaniu testowany film wyglądał bardzo podobnie. Właśnie dlatego pomiary obiektywne warto łączyć z subiektywną oceną.

SSIM mierzy podobieństwo obrazów, a nie pełne ludzkie doświadczenie oglądania. Nie uwzględnia w pełni artefaktów czasowych, postrzeganej ostrości, zachowania obrazu w ruchu ani subiektywnego znaczenia poszczególnych szczegółów.

Inną przydatną miarą jakości percepcyjnej jest VMAF. W czerwcu 2026 roku Netflix udostępnił modele VMAF v1, w tym model opracowany z myślą o oglądaniu na telefonie. Modele te wprost uwzględniają fakt, że postrzegana jakość częściowo zależy od wielkości ekranu i względnej odległości od niego.

Dla jednej z mniej agresywnie skompresowanych próbek podano średni wynik VMAF na poziomie około 95. Nie miałem jednak porównywalnego zestawu wyników VMAF dla wszystkich mocniejszych ustawień CRF. Nie wykorzystywałem więc VMAF do twierdzenia, że CRF 30 lub 32 spełnia jakiś uniwersalny próg jakości.

Wniosek praktyczny był węższy: testowany krótki film bardzo dobrze zniósł agresywną kompresję H.264 podczas normalnego odtwarzania.

9. Dlaczego wybrałem CRF 30 dla krótkich filmów mobilnych

Po porównaniu plików zdecydowałem się na CRF 30 dla podobnych krótkich filmów oglądanych głównie na urządzeniach mobilnych.

Powody były proste:

  • Filmy były krótkie i nie miały zapewniać kinowej jakości obrazu.
  • Liczyło się szybkie ładowanie i małe pliki do pobrania.
  • Na dużym monitorze nie widziałem znaczącej różnicy między CRF 22 a 30.
  • CRF 30 dawał dużo mniejsze pliki niż ostrożniejsze ustawienia.
  • CRF 32 również wyglądał akceptowalnie w testowanej próbce, ale budził mniejsze zaufanie przy bardziej złożonym materiale.

W porównaniu z CRF 28 ustawienie CRF 30 zmniejszyło rozmiar testowego pliku o około 21%. Względem CRF 22 redukcja przekroczyła 60%.

Dla krótkich klipów mobilnych, w których chodzi o przyjemny obraz, szybkie wczytywanie i rozsądne zużycie transferu, był to opłacalny kompromis.

Warunek ma jednak ogromne znaczenie: wybrałem 30 ze względu na rzeczywisty sposób oglądania i wyniki uzyskane na testowanym materiale, a nie dlatego, że 30 jest z natury najlepszym CRF dla smartfonów.

Urządzenie mobilne nie wymaga CRF 30. Potrafi bez problemu wyświetlać wideo zakodowane ze znacznie większą wiernością. CRF 30 oznacza świadomą rezygnację z części wierności obrazu w zamian za mniejszy plik, jeśli taki kompromis jest do przyjęcia.

Zanim zastosowałbym to ustawienie do kolekcji zawierającej wyraźnie zróżnicowane materiały, przetestowałbym kilka reprezentatywnych klipów, w tym trudne sceny ruchu, ciemne ujęcia, gradienty, tekst i drobne faktury.

10. Dlaczego nie polecam CRF 30 do filmów i materiałów wysokiej jakości

To najważniejsze ograniczenie eksperymentu.

Nie przenoś bezkrytycznie mojego wyniku z CRF 30 na filmy pełnometrażowe, materiały wideo wysokiej klasy, nagrania profesjonalne ani filmy przeznaczone na duże ekrany.

Takie materiały mogą zawierać subtelne gradienty, ziarno filmowe, słabo oświetlone sceny, złożony ruch, bardzo drobne tekstury i starannie skorygowane kolory. Zachowanie tych szczegółów może mieć większe znaczenie niż niewielka oszczędność transferu.

W przypadku typowego wysokiej jakości wideo 1080p zacząłbym od znacznie ostrożniejszego ustawienia x264 — około CRF 20 — i sprawdził wartości po obu jego stronach, zależnie od materiału.

Praktycznym zakresem początkowym może być CRF 18–22, jeśli ważna jest wierność wizualna, choć odpowiednia wartość może wykraczać poza ten przedział w zależności od rozdzielczości, treści i wymagań.

Ta sugestia jest zgodna z często publikowanymi zaleceniami dotyczącymi kodowania. Na przykład dokumentacja HandBrake dotycząca jakości wskazuje około RF 20–24 dla wielu zastosowań x264 w rozdzielczości 1080p.

Nie przeprowadziłem takich samych kontrolowanych badań na filmach pełnometrażowych ani wysokiej klasy materiałach filmowych. Nie mogę zatem twierdzić, że CRF 20 jest zawsze optymalny, CRF 22 zawsze wystarcza lub że jakikolwiek konkretny film musi wyglądać źle przy CRF 30.

Właściwa metoda polega na wybraniu reprezentatywnych scen, zakodowaniu kilku poziomów jakości, porównaniu ich na docelowym ekranie i ustaleniu momentu, w którym dalsza kompresja zaczyna wyraźnie szkodzić obrazowi.

Jeśli film ma być archiwizowany, ponownie montowany lub używany jako źródło kolejnych kodowań, wysokiej jakości plik źródłowy należy przechowywać oddzielnie od skompresowanej wersji do dystrybucji.

11. Dlaczego użyłem presetu x264 veryslow

CRF steruje jednym aspektem jakości kompresji, natomiast preset x264 określa, ile wysiłku koder wkłada w poszukiwanie efektywnych rozwiązań kodowania.

x264 oferuje presety od bardzo szybkich do bardzo wolnych. Zwykle wolniejsze presety zużywają więcej czasu CPU, ale mogą zapewniać skuteczniejszą kompresję przy porównywalnej jakości wizualnej.

Porównałem presety medium i veryslow na tym samym materiale. Przy testowanym poziomie jakości veryslow dał mniejszy plik.

Przy kodowaniu offline, wykonywanym raz, gdy wynik będzie później wykorzystywany wielokrotnie, dodatkowy czas przetwarzania może się opłacać.

Dlatego wybrałem -preset veryslow.

Nie jest to jednak rozwiązanie optymalne w każdej sytuacji. Jeśli wideo trzeba przetwarzać natychmiast, zasoby CPU są kosztowne lub do obróbki pozostaje ogromna kolejka plików, slow albo medium mogą zapewnić lepszy kompromis operacyjny.

Preset zmienia głównie złożoność kodowania i efektywność kompresji. Nie przekształca H.264 w inny kodek i nie sprawia, że wynikowy plik staje się z natury niezgodny z urządzeniami mobilnymi.

12. Do filmów anime używam ustawienia animation w x264

Gdy materiał zawiera rysowaną animację lub obraz w stylistyce anime, korzystam w x264 z -tune animation.

To ustawienie jest niezależne od CRF. Parametr tune zmienia niektóre decyzje kodera tak, aby lepiej pasowały do określonych cech obrazu. Wariant animation opracowano z myślą o rysowanych krawędziach, jednolitych obszarach barw i stylizowanym ruchu.

Stosuję więc następujące podejście:

  • Anime lub animacja rysowana: -preset veryslow -tune animation.
  • Zwykłe nagrania z kamery: nie włączam automatycznie animation; zaczynam od ustawień domyślnych kodera albo oddzielnie sprawdzam odpowiedni wariant tune.

Trzeba dobrze rozumieć działanie tej opcji: -tune animation nie gwarantuje widocznie lepszej jakości ani mniejszych plików. Zmienia sposób pracy kodera, a wynik zależy od materiału.

Przeprowadziłem osobne porównanie przy stałym CRF z użyciem ustawienia animation. W tym konkretnym teście jego włączenie zwiększyło rozmiar pliku o około 6% i nieznacznie poprawiło mierzone podobieństwo obrazu. Różnica wizualna była mała.

Główne porównanie rozmiarów dla CRF 22–32 wykonałem bez ustawienia animation. Nie należy zatem zakładać, że dokładnie te same rozmiary i współczynniki kompresji wystąpią po włączeniu -tune animation.

Mimo to przy materiałach anime wolę używać ustawienia przeznaczonego do animacji i oceniać uzyskany rozmiar oraz jakość w ramach profilu kodowania dla tej treści.

Dostrajanie kodera należy traktować jako dostosowanie do rodzaju materiału, a nie uniwersalną poprawę jakości.

13. Moje ustawienia FFmpeg dla krótkiego anime na urządzenia mobilne

W przypadku zwykłego filmu anime w SDR, który rzeczywiście wymaga transkodowania, jako punkt wyjścia zastosowałbym następujący profil:

ffmpeg -i input.mp4 \
  -map 0:v:0 -map '0:a:0?' \
  -c:v libx264 \
  -preset veryslow \
  -tune animation \
  -crf 30 \
  -profile:v high \
  -pix_fmt yuv420p \
  -c:a aac -b:a 128k \
  -movflags +faststart \
  output.mp4

To polecenie jednoznacznie określa najważniejsze ustawienia:

  • -c:v libx264 używa programowego kodera H.264.
  • -preset veryslow przedkłada efektywność kompresji nad szybkość kodowania.
  • -tune animation włącza dostosowania kodera przeznaczone do animacji.
  • -crf 30 ustawia agresywny docelowy poziom stałej jakości wybrany dla tego rodzaju krótkich filmów.
  • -profile:v high wybiera profil H.264 szeroko obsługiwany przez nowoczesne urządzenia.
  • -pix_fmt yuv420p tworzy 8-bitowy obraz w formacie 4:2:0.
  • -map 0:v:0 wybiera pierwszy strumień wideo.
  • -map '0:a:0?' opcjonalnie wybiera pierwszy strumień audio.
  • -c:a aac -b:a 128k koduje dźwięk do AAC z podanym bitrate, jeśli dźwięk występuje.
  • -movflags +faststart przenosi metadane inicjalizacyjne MP4 bliżej początku pliku.

To przykład, a nie uniwersalne polecenie dla każdego pliku wejściowego. Konkretny materiał może wymagać dodatkowych działań.

W szczególności nie wolno bezmyślnie konwertować HDR ani materiału 10-bitowego na 8-bitowy SDR bez odpowiedniego zarządzania kolorem: mogą pojawić się nieprawidłowe barwy, utrata szczegółów w jasnych partiach lub widoczne pasy na gradientach. Uwagę wymagają też metadane obrotu, zmienna liczba klatek na sekundę, proporcje pikseli, materiały z przeplotem, nietypowe układy audio i ograniczenia rozdzielczości.

Jeżeli liczba klatek na sekundę i wymiary materiału źródłowego są odpowiednie, zwykle warto je zachować, co ułatwia porównanie i pozwala uniknąć zbędnego skalowania lub zmian ruchu. Nie wymuszaj stałej liczby klatek na sekundę dla materiałów o zmiennej częstotliwości, jeśli nie jest to konieczne: taka konwersja może duplikować lub usuwać klatki. Przy skalowaniu zachowaj proporcje wyświetlanego obrazu i dopilnuj, by wymiary odpowiadały wybranemu formatowi pikseli 4:2:0. Bardzo duże rozdzielczości, częstotliwości klatek lub poziomy H.264 mogą przekraczać możliwości dekodowania starszych urządzeń, dlatego zapewnienie zgodności wymaga czasem świadomego zmniejszenia rozdzielczości albo liczby klatek na sekundę.

14. Ostrożniejszy punkt wyjścia w FFmpeg dla wysokiej jakości wideo

Jeżeli wierność obrazu jest zdecydowanie ważniejsza niż rozmiar pliku, zacznij od niższego CRF i oceń wynik.

Na przykład dla typowych nagrań z kamery w SDR rozsądnym ustawieniem do wstępnych eksperymentów będzie:

ffmpeg -i input.mp4 \
  -map 0:v:0 -map '0:a:0?' \
  -c:v libx264 \
  -preset slow \
  -crf 20 \
  -profile:v high \
  -pix_fmt yuv420p \
  -c:a aac -b:a 192k \
  -movflags +faststart \
  output.mp4

Preset slow w tym przykładzie jest praktycznym, uniwersalnym punktem wyjścia, a nie stwierdzeniem, że przewyższa veryslow. Użycie veryslow również ma sens, jeśli dodatkowy czas kodowania jest akceptowalny.

Ten profil wysokiej jakości to propozycja do przetestowania, a nie konfiguracja potwierdzona moim eksperymentem z krótkim filmem.

Przy materiałach wysokiej klasy przetestuj CRF w okolicach 18, 20 i 22, a następnie wybierz wartość na podstawie widocznych rezultatów. Trudne do skompresowania ziarno lub ruch mogą wymagać innych ustawień, a archiwalne pliki wzorcowe — znacznie ostrożniejszej kompresji.

15. Nie koduj ponownie filmu bez powodu

Stratna kompresja wideo ma swoją cenę. Ponowne kodowanie już skompresowanego pliku może wprowadzić kolejne artefakty, nawet jeśli nowy wynik wydaje się podobny do oryginału.

Przed transkodowaniem sprawdź, czy oryginalny plik nie spełnia już wymagań dotyczących zgodności, rozmiaru i jakości.

Jeżeli plik zawiera już zgodne wideo H.264 i audio AAC, a obraz nie wymaga modyfikacji, kopiowanie strumieni może być lepsze niż kolejne kodowanie stratne.

ffmpeg -i input.mp4 \
  -map 0:v:0 -map '0:a:0?' \
  -c copy \
  -movflags +faststart \
  output.mp4

Ta operacja kopiuje skompresowane strumienie bez ponownego kodowania. Może zmienić organizację kontenera, unikając kolejnej generacji strat jakości spowodowanych kompresją.

Zwykle nie przyniesie jednak równie dużego zmniejszenia pliku jak nowe kodowanie z obniżoną jakością.

Jeżeli istniejący film jest już niewielki, zgodny i wygląda dobrze, pozostawienie go bez zmian może być najlepszą optymalizacją.

16. Sprawdzaj zakodowane filmy, zamiast ufać wyłącznie rozmiarowi pliku

Poprawne zakończenie FFmpeg nie dowodzi automatycznie, że film spełnia wszystkie wymagania.

Zacznij od sprawdzenia strumieni wyjściowych za pomocą FFprobe:

ffprobe -v error \
  -show_entries stream=codec_name,profile,pix_fmt,width,height,avg_frame_rate,nb_frames:format=duration,size \
  -of json output.mp4

Zweryfikuj kodek, format pikseli, wymiary, częstotliwość klatek, czas trwania i strumienie audio.

Następnie zdekoduj cały plik, aby wykryć niektóre uszkodzenia lub błędy dekodowania:

ffmpeg -v error -xerror -i output.mp4 -f null -

Podczas eksperymentów z kompresją porównuj wersje utworzone z tego samego źródła. Zachowuj stałe warunki i zmieniaj tylko jedno główne ustawienie naraz.

Oglądaj film w ruchu, sprawdzaj drobne szczegóły i zwracaj uwagę na gradienty, ciemne obszary, poruszające się obiekty oraz tekst.

Jeśli to możliwe, uzupełniaj porównania wizualne obiektywnymi miarami, takimi jak SSIM, PSNR czy VMAF. Jeden wysoki wynik nie oznacza, że wszystkie artefakty są niewidoczne.

Na koniec sprawdź filmy na reprezentatywnych urządzeniach i w scenariuszach otwierania pobranych plików. Informacje o obsłudze przez przeglądarki są przydatne, ale rzeczywiste testy odtwarzania są szczególnie ważne, gdy zgodność stanowi główny cel.

17. Upewnij się, że pliki MP4 są prawidłowo dostarczane

Dobre ustawienia kodowania nie zrekompensują błędów w dostarczaniu filmów przez stronę.

Przy zwykłym progresywnym odtwarzaniu MP4 ustaw prawidłowy nagłówek Content-Type: video/mp4 i obsługę żądań HTTP z zakresami bajtów tam, gdzie potrzebne jest pobieranie częściowe i przewijanie.

Opcja FFmpeg +faststart przenosi dane inicjalizacyjne MP4 bliżej początku zwykłego pliku. Pomaga to w progresywnym wczytywaniu, ale nie poprawia jakości obrazu ani nie obniża bitrate.

Do udostępnienia jednego pliku MP4 z H.264 wystarczy podstawowy element HTML video:

<video controls playsinline preload="metadata">
  <source src="/media/video.mp4" type="video/mp4">
</video>

Atrybut preload jest wskazówką dla przeglądarki, a nie sztywnym limitem pobierania. Zasady automatycznego odtwarzania mogą też wymagać wyciszenia filmu lub braku ścieżki dźwiękowej.

Jeżeli na stronie znajduje się kilka filmów, unikaj pobierania wszystkich od razu. Wczytywanie ich dopiero w razie potrzeby może ograniczyć zużycie danych mobilnych i poprawić odczuwaną szybkość działania strony.

Dla krótkich klipów mobilnych optymalizacja momentu rozpoczęcia pobierania bywa równie ważna jak zmniejszenie rozmiaru zakodowanego pliku.

18. Jaki format i poziom jakości wybrać?

Odpowiedź zależy od tego, co chcesz zoptymalizować.

Twój celZalecany punkt wyjścia
Jeden szeroko zgodny plik na stronę i do pobraniaMP4 + H.264 + AAC, gdy występuje dźwięk
Nowoczesne przeglądarki z kilkoma opcjami formatuAV1 lub VP9 z zapasowym H.264
Maksymalna kompresja na obsługiwanych urządzeniachSprawdź AV1
Kontrolowane środowisko zgodne z HEVCRozważ MP4 + HEVC
Krótkie klipy mobilne, w których najważniejszy jest rozmiarRozważ x264 CRF 30 po testach reprezentatywnych próbek
Anime lub animacja rysowanaPrzetestuj x264 z -tune animation
Filmy wysokiej jakości lub materiały premiumZacznij od ostrożniejszego CRF około 20 i sprawdź
Kodowanie offline, gdy czas CPU ma mniejsze znaczenieRozważ x264 slow albo veryslow
Szybkie przetwarzanie przy ograniczonym CPURozważ x264 medium albo slow
Istniejący film już spełnia wymaganiaZachowaj go lub zmień kontener bez ponownego kodowania
Archiwizacja lub przyszły montażZachowaj wysokiej jakości plik wzorcowy oddzielnie od wersji do dystrybucji

19. Mój ostateczny wybór i to, co naprawdę wykazał eksperyment

Po przeanalizowaniu formatów wideo, zgodności, efektywności kodowania i rzeczywistych wyników kompresji wybrałem praktyczny profil dostarczania krótkich filmów przeznaczonych na urządzenia mobilne.

Wybrałem format MP4 z H.264, ponieważ przewidywalna zgodność z przeglądarkami, telefonami, pobranymi plikami i zewnętrznymi aplikacjami była dla mnie ważniejsza niż najmniejszy plik możliwy do uzyskania za pomocą nowszego kodeka.

Wybrałem koder libx264 z presetem veryslow, ponieważ mogłem kodować offline, a dodatkowy czas przetwarzania był akceptowalny.

Do filmów anime używam ustawienia animation, pamiętając, że zmienia ono działanie kodera, ale nie gwarantuje mniejszych plików ani lepszej jakości obrazu w każdym przypadku.

Do krótkich filmów mobilnych wybrałem CRF 30, ponieważ w moim porównaniu ustawienie to znacznie zmniejszyło rozmiar pliku bez istotnej widocznej różnicy podczas normalnego odtwarzania, nawet na dużym monitorze komputera.

Ten wynik nie oznacza, że CRF 30 jest idealny dla filmów lub nagrań wysokiej jakości. Gdy ważniejsze są drobne szczegóły, gradienty, ziarno i ogólna wierność obrazu, zacząłbym testy w okolicach CRF 20 lub od innej odpowiednio ostrożnej wartości. Nie przeprowadziłem analogicznego kontrolowanego badania materiałów filmowych, więc nie przedstawiam tej liczby jako optimum dowiedzionego eksperymentalnie.

Najważniejszy wniosek jest taki, że nie istnieje jeden uniwersalnie najlepszy kodek, kontener ani parametr CRF dla wszystkich filmów.

Jeżeli priorytetem jest maksymalna zgodność i chcesz mieć tylko jeden plik, MP4/H.264 to solidny wybór domyślny. Jeśli możesz udostępniać formaty zapasowe i zależy ci na lepszej kompresji, rozważ VP9 oraz AV1. Jeśli kodujesz krótkie filmy oglądane głównie na telefonach, sprawdź, czy wyższy CRF zapewnia dostatecznie małe pliki bez pogorszenia zamierzonego doświadczenia. Przy filmach fabularnych lub materiałach najwyższej klasy stosuj ostrożniejsze ustawienia jakości i dokładnie je weryfikuj.

Najpierw ustal wymagania dotyczące odtwarzania, następnie wybierz kodek, a dopiero na końcu jakość kompresji. Potem sprawdź wynik na urządzeniach i w warunkach, które naprawdę mają znaczenie. Takie podejście jest bardziej niezawodne niż bezkrytyczne wybieranie kodeka lub CRF tylko dlatego, że jest nowszy, efektywniejszy albo często polecany.