Co to jest kodek (np. DivX?) I czym różni się od formatu pliku (np. MPG)?

95

Jestem taki zdezorientowany ... jaka jest różnica między kodekiem audio / wideo (który najwyraźniej jest skrótem dla „enkodera / dekodera”, coś w rodzaju tego, jak „modem” jest tak naprawdę „modulatorem / demodulatorem”) a audio / format wideo?
(Czy w ogóle używam właściwej terminologii?)

tj .: Jaka jest różnica między powiedzeniem czegoś, że jest „MPEG-4”, a powiedzeniem, że używa kodeka „DivX”? Dlaczego Windows Media Player czasami uruchamia .mpgpliki, a czasem nie?

Które z poniższych są kodekami, które są formatami plików, a które nie?

  • Quicktime MOV
  • MPEG (1, 2, 3, 4)
  • WMV
  • FFmpeg
  • AVC
  • Xvid
  • DivX (czym różni się od palindromu, Xvid?)
  • H.264
Mehrdad
źródło
2
Patrząc na moje pytanie 6 lat później, myślę tylko: „skąd o tym nie wiesz ?!”
Mehrdad
1
Wszyscy zaczęliśmy gdzieś. ;)
Hashim

Odpowiedzi:

146

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”, „ 0x810429AABTutaj 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

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 .

MPEG-4 część 2

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.

MPEG-4 część 10 / AVC / H.264

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 .

HEVC / H.265

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 i AV1

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:

AVI

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.

MP4

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.

MKV i WebM

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.

Ogg

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).

FLV

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 libavcodeci libavformatbibliotekach 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
slhck
źródło
33
Teraz słusznie można to nazwać odpowiadając na pytanie. Dobra robota.
Francesco
1
Świetna odpowiedź, ale przegapiłeś format kontenera Ogg.
Ignacio Vazquez-Abrams
7
To najbardziej niesamowita odpowiedź, jaką widziałem od jakiegoś czasu. Wielkie dzięki za wspaniałe wyjaśnienia! :)
Mehrdad
@ Mehrdad Cieszę się, że mogłem rzucić nieco światła na ten temat. Dziękuję :)
slhck
1
Czasami chciałbyś zrobić wiele pozytywnych opinii na odpowiedź :)
Dolf Andringa
3

Zasadniczo „format” mediów to tak naprawdę kontener zawierający strumień audio (niektórych kodeków audio) i strumień wideo (niektórych kodeków wideo), a czasem dodatkowe informacje. większość plików ma typ pliku oparty na kontenerze, a nie na kodeku

FFmpeg nie jest ani kontenerem, ani kodekiem - to wszechstronny zestaw bibliotek, kodeków i oprogramowania do konwersji plików, który leży u podstaw wielu konwerterów i odtwarzaczy muzycznych.

H.264 / AVC i xvid / divx są kodekami

AVI (które to pliki divx / xvid), MP4, MPEG są kontenerami.

Nie jestem pewien co do Quicktime Mov - .mov to kontener, QuickTime to kodek.

Journeyman Geek
źródło
Brak kodeka „Quicktime”. Quicktime to platforma multimedialna, w tym kontener .mov, oprogramowanie do kodowania, dekodowania i wyświetlania szeregu kodeków, a także inne ciekawostki, takie jak Quicktime VR.
stib
1

istnieją kodeki i kontenery (formaty plików). Kodek opisuje sposób kodowania / dekodowania danych. Drugi opisuje sposób umieszczenia zakodowanych danych w pliku.

Większość odtwarzaczy multimedialnych obsługuje wiele typów kodeków i kontenerów. Jest to mylące, dlatego sugeruję przeczytanie moich referencji, aby uzyskać więcej informacji

uSlackr
źródło
-1

Format to nazwa nadana określonemu typowi formatu pliku i typowi kompresji (większość wideo jest kompresowana w celu zmniejszenia rozmiaru), a kodek jest tym, co faktycznie może go skompresować, odczytać i przetłumaczyć na wideo, które widzisz przez jego dekompresję . Innymi słowy, jeden jest typem pliku, a drugi to oprogramowanie.

Do większości filmów zwykle odnosimy się po nazwie formatu, więc Quicktime MOV, MPEG i WMV są formatami.

FFmpeg (nigdy o tym nie słyszałem) wydaje się być nazwą oprogramowania do konwersji różnych formatów na inne formaty.

AVC i H.264 są takie same i są formatem do kodowania wideo HD.

DivX to dostępny w handlu kodek.

Xvid to kodek dla MPEG-4.

KCotreau
źródło
1
ffmpeg jest w zasadzie zapleczem dla 99% konwerterów FOSS.
Journeyman Geek
Ta odpowiedź jest zła. Spośród 7 zdań tylko liczby 6 i 7 są poprawne, nawet te pozbawione szczegółów.
jiggunjer,