Niektóre główne definicje:
- Kodek (np. H.264, HEVC, VP9) jest odpowiedzialny tylko za część wideo lub audio, a jeden lub więcej kodeków można połączyć w kontener.
- Kontener (np. MP4, MKV) jest odpowiedzialny za trzymanie ich razem, i to zwykle otwiera się w wybranym odtwarzaczu multimediów.
- Konkretny koder (np. X264, libvpx) jest odpowiedzialny za przekształcenie strumienia wejściowego w strumień bitów zgodny z kodekiem. Często istnieje wiele koderów dla jednego konkretnego kodeka.
Jak widać, musimy tutaj wyjaśnić kilka rzeczy.
Co to jest kodek?
Kodek jest skrótem od koder / dekoder, który w zasadzie tylko oznaczają: Dane generowane przez koder zawsze mogą być dekodowane przez odpowiedni dekoder. Zdarza się, że dotyczy to wideo, audio, ale możesz również pomyśleć o kryptografii (koder potrzebuje odpowiedniego dekodera, aby wyświetlić zaszyfrowaną wiadomość).
Obecnie, gdy określony jest kodek wideo, instytucje, które biorą w nim udział, zwykle określają tylko składnię standardu. Na przykład powiedzą: „Format strumienia bitów musi być taki”, „ 0x810429AAB
Tutaj zostanie przetłumaczony na to” itp. Często dostarczają koder i dekoder referencyjny, ale w jaki sposób koder jest następnie zapisywany w celu dopasowania do takiego format całkowicie zależy od producentów.
To jest powód, dla którego znajdziesz tak wiele koderów dla tego samego kodeka, a niektóre nawet komercyjne.
Przykład przypadku - H.264
Zanim pomieszamy terminologię, weźmy przykład. Rozważ przypadek dotyczący H.264 . Nazwa standardu to H.264 - to nie jest nazwa rzeczywistego kodera. Mainconcept jest bardzo dobrym komercyjnym koderem, podczas gdy x264 jest darmowym i otwartym oprogramowaniem. Oba twierdzą oczywiście, że zapewniają dobrą jakość.
Sam fakt, że możesz zoptymalizować kodowanie, stanowi tutaj konkurencję. Oba kodery dostarczają ustandaryzowany strumień bitów, który zawsze można dekodować za pomocą dekodera zgodnego z H.264.
Podsumowując
Podsumowując, powiedzmy, że koder:
- robić klatki wideo
- wygenerować prawidłowy strumień bitów
Strumień bitów jest następnie multipleksowany do kontenera.
Dekoder:
- weź ten prawidłowy strumień bitów
- zrekonstruuj z niego klatki wideo
Oba są zgodne ze standardem kodeków. To wszystko!
Aktualne kodeki
Obecnie prawdopodobnie znajdziesz tylko filmy zakodowane przy użyciu kodeków, które wymienię poniżej. Co ciekawe, prawie wszystkie z nich zostały utworzone przez grupę Motion Picture Experts Group (MPEG). Ale są też inne, wolne od opłat, kodeki, np. Te utworzone przez Google lub Alliance for Open Media, które są konkurencyjne w stosunku do standardów MPEG.
Zauważ, że „MPEG” może odnosić się zarówno do kodeków, jak i do kontenerów, jak zobaczysz poniżej. To dodaje zamieszanie, ale wiedz tylko, że sam „MPEG” nic nie znaczy, np. „Mam plik w formacie MPEG” jest bardzo niejednoznaczny ”.
MPEG-2 jest dość stary. Jego pierwsza publiczna wersja pochodzi z 1996 roku. Wideo MPEG-2 jest najczęściej używane do nadawania płyt DVD i telewizji, np. DVB-T lub satelitarnych oraz starszych aplikacji, w których ważna jest kompatybilność. Filmy MPEG-2 najczęściej znajdują się w kontenerze .MPG .
Prawdopodobnie jest to ten, który był używany głównie do kodowania filmów w Internecie w połowie 2000 roku, ale w międzyczasie został zastąpiony. Oferuje dobrą jakość przy praktycznych rozmiarach plików, co oznaczało, że można nagrać cały film o długości 90 minut na płycie CD o pojemności 600 MB (podczas gdy w przypadku formatu MPEG-2 potrzebna byłaby płyta DVD, zobacz moją odpowiedź tutaj ). Nie działa już tak dobrze w przypadku treści HD lub 4K.
Niektóre kodery, które wyprowadzają wideo MPEG-4 część 2, to DivX , jego otwarty program XviD i Nero Digital .
Filmy MPEG-4 część 2 najczęściej pochodzą z kontenera AVI , ale MP4 jest również często widywany.
Jest to również znane jako MPEG-4 Advanced Video Coding (AVC) lub H.264 ; jest to obecnie najczęściej używany kodek. Zapewnia dobrą jakość przy małych rozmiarach plików i dlatego doskonale nadaje się do wszelkiego rodzaju filmów do Internetu lub urządzeń mobilnych. H.264 znajdziesz w prawie wszystkich nowoczesnych aplikacjach, od telefonów po kamery. Na dyskach Blu-ray wideo jest teraz kodowane w H.264.
Niektóre kodery to: x264 , NVENC (od NVIDIA), Mainconcept . Filmy najczęściej pochodzą z kontenerów MP4 , MKV lub MOV .
Nazywany także MPEG-H Part 2, jest to następca MPEG-4 Part 10 / AVC / H.264. Ma na celu uzyskanie wyższych rozdzielczości (do 8 KB ) i może zaoferować do 50% wyższą wydajność kodowania (pod względem jakości w porównaniu z przepływnością) w porównaniu do H.264 (patrz na przykład ten artykuł ).
Standard został opublikowany w 2013 roku i powoli kodek zaczyna być coraz częściej wykorzystywany, np. Do transmisji wideo IPTV lub online. HEVC jest także używany przez Apple do przechowywania filmów i zdjęć (przy użyciu HEIF ) na iOS. Jednak fakt, że istnieje wiele pul patentowych związanych z HEVC, powoduje, że wiele firm (prawie wszystkie oprócz Apple) przechodzi na alternatywy bez tantiem. HEVC nie jest również obsługiwane natywnie przez wszystkie przeglądarki, przez co nie nadaje się do transmisji strumieniowej w Internecie.
Najbardziej znanym koderem jest x265 . Jest też NVENC . Filmy zwykle są dostarczane w pojemnikach MP4 .
VP9 (następca VP8) to kodek opracowany głównie przez Google. Jest otwarty i nieodpłatny oraz zaimplementowany w wielu przeglądarkach . Jego jakość jest prawie tak dobra jak HEVC, a czasem nawet lepsza (patrz ten artykuł Netflix). VP9 jest tym, co dostajesz, gdy oglądasz YouTube w przeglądarce, która go obsługuje.
VP9 można zakodować za pomocą kodera libvpx i często jest on dostępny w kontenerach WebM lub MKV .
Niektóre firmy połączyły siły, aby stworzyć jeszcze silniejszego konkurenta dla HEVC - ale jako nieodpłatna alternatywa. AV1 będzie następcą VP9 i opiera się na tym, co miało stać się VP10. Jest wspierany przez Alliance for Open Media (założony przez Amazon, Cisco, Google, Intel, Microsoft, Mozilla i Netflix). Przeczytaj więcej na ten temat tutaj .
Libaom koder może być używany do generowania strumieni bitów AV1, ale jest eksperymentalnym.
Co to jest format (kontener)?
Do tej pory objaśnialiśmy tylko surowy „strumień bitów”, który w zasadzie jest po prostu surowymi danymi wideo. Możesz faktycznie oglądać wideo, używając tak surowego strumienia bitów. Ale w większości przypadków to po prostu za mało lub niepraktycznie.
Dlatego musisz owinąć wideo w pojemniku. Istnieje kilka powodów, dla których:
- Może chcesz trochę audio wraz z wideo
- Może chcesz przejść do określonej części filmu (np. „Przejdź do 1: 32: 20.12”)
- Zarówno audio, jak i wideo powinny być idealnie zsynchronizowane
- Wcześniej wideo może wymagać przesłania przez niezawodną sieć i podzielenia na pakiety
- Wideo może być nawet wysyłane przez stratną sieć (jak 3G) i dzielone wcześniej na pakiety
Z tych wszystkich powodów wymyślono formaty kontenerów, niektóre proste, inne bardziej zaawansowane. Wszyscy oni „zawijają” strumień bitów wideo w inny strumień bitów.
Kontener zsynchronizuje klatki wideo i audio zgodnie ze swoim znacznikiem czasu prezentacji (PTS), dzięki czemu będą wyświetlane dokładnie w tym samym czasie. W razie potrzeby zajmowałoby się również dodawaniem informacji do serwerów przesyłania strumieniowego, aby serwer przesyłania strumieniowego wiedział, kiedy wysłać część pliku.
Rzućmy okiem na niektóre popularne pojemniki.
Popularne pojemniki
Znajdziesz filmy w większości owinięte w następujących pojemnikach. Są też inne mniej popularne, ale jak powiedziałem, przeważnie są to:
Audio Video Interleave - jest to najbardziej podstawowy pojemnik, służy tylko do przeplatania audio i wideo. Został napisany w 1992 roku i jest nadal używany, ale uważany za dziedzictwo, więc nie używaj go więcej.
jest również znany jako MPEG-4 część 14 i jest oparty na formacie pliku QuickTime. Jest to format początkowy dla wideo H.264, ale obejmuje również HEVC, MPEG-4 Part 2 i MPEG-2.
Ten kontener może również owijać tylko audio, dlatego znajdziesz tak wiele plików .mp4, które nie są filmami, ale audio zakodowane w AAC , również w plikach .m4a (tylko inne rozszerzenie). Rozszerzenie .m4v jest zwykle pobierane dla strumieni bitów wideo.
Matroska Video (MKV) to otwarty i darmowy format plików, który jest często spotykany obecnie, ponieważ obsługuje w zasadzie dowolny kodek, od H.264 do VP9, i oczywiście także wiele kodeków audio.
WebM opiera się na MKV i jest używany przede wszystkim do wideo VP9 i audio Opus - jest to pojemnik z wyboru do strumieniowego przesyłania wideo w Internecie, gdy używane są te kodeki.
Kontener Ogg jest preferowanym kontenerem dla kodeka wideo Theora (i kodeka audio Vorbis ), również utworzonego przez Fundację Xiph.Org. Jest także darmowy i open source (podobnie jak kodek).
Format wideo Flash został stworzony przez Adobe do użytku w aplikacjach do przesyłania strumieniowego. Nie jest już tak często używany, ponieważ sposób przesyłania strumieniowego zmienił się znacznie w ciągu ostatnich lat.
Popularne kodeki i formaty
Które z poniższych są kodekami, które są formatami plików, a które nie?
- Quicktime MOV : .mov to rozszerzenie formatu QuickTime File Format , który jest kontenerem utworzonym przez Apple. Ten pojemnik został później dostosowany do MP4. Może przenosić wszelkiego rodzaju kodeki. Quicktime jest w rzeczywistości całym środowiskiem medialnym, tak naprawdę, tak naprawdę, nie określa on żadnego kodeka.
- MPEG (1, 2, 3, 4) : Standardy zdefiniowane przez grupę ekspertów ds. Filmów. Zobacz mój post powyżej, aby uzyskać szczegółowe informacje.
- WMV : Windows Media Video. W rzeczywistości jest to kodek umieszczony w kontenerze Advanced Systems Format , który ponownie korzysta z rozszerzenia .wmv . Dziwne, ale tak już jest.
- FFmpeg : To nie jest kodek ani kontener. Jest to biblioteka narzędzi wideo, które umożliwiają także konwersję między różnymi kodekami i kontenerami. FFmpeg opiera się na otwartym kodzie źródłowym
libavcodec
i libavformat
bibliotekach odpowiednio do tworzenia kodeków i kontenerów. Na tej podstawie opiera się większość narzędzi wideo, które dziś znajdziesz.
- AVC : synonim MPEG-4 część 10 lub H.264.
- DivX : inny typ kodera dla wideo MPEG-4 część 2.
- Xvid : Jeden typ kodera dla wideo MPEG-4 część 2. To tylko otwarta, darmowa wersja DivX, co oczywiście wywołało pewne kontrowersje.
- H.264 : Synonim MPEG-4 część 10 lub AVC.
Na marginesie:
Czy w ogóle używam właściwej terminologii?
Chyba kiedyś wolałbym używać „kodeka” i „kontenera” zamiast „formatu”, aby uniknąć nieporozumień. Format może teoretycznie być dowolny, ponieważ zarówno kodeki, jak i kontenery określają format (tj. Sposób reprezentacji danych).
Biorąc to pod uwagę, terminologią FFmpeg byłoby użycie „formatu” dla kontenera. Wynika to również z rozróżnienia między:
libavcodec
, biblioteka do kodowania / dekodowania
libavformat
, biblioteka dla kontenerów