Что такое кодек (например, DivX?) И чем он отличается от формата файла (например, MPG)?


95

Я так запутался ... в чем разница между аудио / видео кодеком (который, по-видимому, является сокращением для "кодера / декодера", вроде того, как "модем" на самом деле "модулятор / демодулятор") и аудио / видео формат?
(Я даже использую правильную терминологию?)

то есть: в чем разница между тем, чтобы что-то сказать «MPEG-4», и тем, что что-то использует кодек «DivX»? Почему Windows Media Player иногда запускает .mpgфайлы, а иногда нет?

Кроме того, какие из следующих кодеков, какие форматы файлов, а какие нет?

  • Quicktime MOV
  • MPEG (1, 2, 3, 4)
  • WMV
  • FFmpeg
  • AVC
  • Xvid
  • DivX (чем он отличается от своего палиндрома, Xvid?)
  • H.264

2
Глядя на мой собственный вопрос 6 лет спустя, и все, что я могу думать, это "как ты не знаешь этого ?!"
Мердад

1
Мы все начали откуда-то. ;)
Хашим

Ответы:


146

Некоторые основные определения:

  • Кодек (например, H.264, HEVC, VP9) отвечает только за видео или аудио часть, и один или несколько кодеков могут быть объединены в контейнер.
  • Контейнер (например, MP4, MKV) отвечает за их хранение, и это также то, что вы обычно открываете в своем медиаплеере по выбору.
  • Конкретный кодер (например, x264, libvpx) отвечает за превращение входного потока в поток битов, совместимый с кодеками. Часто существует несколько кодеров для одного конкретного кодека.

Как вы можете видеть, мы должны объяснить несколько вещей здесь.

Что такое кодек?

Кодек короток для кодера / декодера, который в основном просто означает следующее: Данные , полученные с помощью кодера всегда можно декодировать с помощью соответствующего декодера. Это действительно для видео, аудио, но вы также можете подумать о криптографии (кодировщику нужен соответствующий декодер для отображения зашифрованного сообщения).

В настоящее время, когда указывается видеокодек, участвующие в нем учреждения обычно определяют только синтаксис стандарта. Например, они скажут: «Формат битового потока должен быть таким», « 0x810429AABЗдесь будет переведено в это» и т. Д. Часто они предоставляют эталонный кодер и декодер, но как тогда кодер пишется для соответствия такому Формат полностью зависит от производителей.

По этой причине вы найдете так много кодеров для одного и того же кодека, а некоторые даже коммерческие.

Пример дела - H.264

Прежде чем мы перепутаем терминологию, давайте рассмотрим пример. Рассмотрим случай для H.264 . Название стандарта - H.264 - это не имя фактического кодировщика. Mainconcept - очень хороший коммерческий кодер, тогда как x264 - бесплатный и с открытым исходным кодом. Конечно, оба претендуют на высокое качество.

Тот факт, что вы можете оптимизировать кодировку, создает конкуренцию здесь. Оба кодера доставляют стандартизированный поток битов, который всегда можно декодировать с помощью H.264-совместимого декодера.

Обобщить

Итак, в общем, давайте просто скажем, что кодер будет:

  • взять видеокадры
  • создать действительный поток битов

Затем поток битов мультиплексируется в контейнер.

Декодер будет:

  • принять этот действительный поток битов
  • реконструировать видео кадры из него

Они оба соответствуют стандарту кодеков. Вот и все!


Текущие кодеки

В наши дни вы, вероятно, найдете только видео с кодеками, о которых я упомяну ниже. Интересно, что почти все они были созданы группой экспертов по кинематографии (MPEG). Но есть и другие бесплатные кодеки, например, созданные Google или Alliance for Open Media, которые являются конкурентами стандартов MPEG.

Обратите внимание, что «MPEG» может относиться как к кодекам, так и к контейнерам, как вы увидите ниже. Это добавляет путаницы, но просто знайте, что само по себе «MPEG» ничего не значит, например, «у меня есть файл в формате MPEG», это очень неоднозначно ».

MPEG-2,

MPEG-2 довольно старый. Его первый публичный выпуск вышел в 1996 году. Видео MPEG-2 в основном используется для DVD и телевизионного вещания, например, DVB-T или спутникового, а также для унаследованных приложений, где важна совместимость. Видео MPEG-2 в основном находятся в контейнере .MPG .

MPEG-4 часть 2

Вероятно, это тот, который использовался в основном для кодирования видео для Интернета в середине 2000-х, но в то же время он был заменен. Он предлагает хорошее качество при практических размерах файлов, что означает, что вы можете записать весь фильм продолжительностью 90 минут на компакт-диск объемом 600 МБ (тогда как для MPEG-2 вам понадобился бы DVD, см. Мой ответ здесь ). Это больше не работает так хорошо для HD или 4K контента.

Некоторыми кодировщиками, которые выводят видео в формате MPEG-4 Part 2, являются DivX , его Ripoff с открытым исходным кодом XviD и Nero Digital .

Видеоролики MPEG-4 Part 2 в основном поставляются в контейнере AVI , но MP4 также часто просматривается.

MPEG-4 Part 10 / AVC / H.264

Это также известно как MPEG-4 Advanced Video Coding (AVC) или H.264 ; это самый используемый кодек сегодня. Он предлагает хорошее качество при небольших размерах файлов и поэтому идеально подходит для всех видов видео для Интернета или мобильных устройств. Вы найдете H.264 практически во всех современных приложениях, от телефонов до видеокамер. На дисках Blu-ray видео теперь кодируется в формате H.264.

Некоторые кодеры для этого: x264 , NVENC (от NVIDIA), Mainconcept . Видео в основном приходят в контейнерах MP4 , MKV или MOV .

HEVC / H.265

Также называется MPEG-H Part 2, это преемник MPEG-4 Part 10 / AVC / H.264. Он нацелен на более высокие разрешения (до 8 КБ ) и может обеспечить производительность кодирования на 50% выше (с точки зрения качества и скорости передачи битов) по сравнению с H.264 (см. , Например, эту статью ).

Стандарт был опубликован в 2013 году, и постепенно кодек начинает все больше и больше использоваться, например, для IPTV или онлайн-трансляции видео. HEVC также используется Apple для хранения видео и изображений (с использованием HEIF ) на iOS. Однако тот факт, что с HEVC связано несколько патентных пулов, заставляет многие компании (почти все, кроме Apple) переходить на альтернативы без роялти. HEVC также изначально не поддерживается всеми браузерами, что делает его непригодным для потоковой передачи через Интернет.

Самый известный кодер - x265 . Там же NVENC . Видео обычно приходят в контейнерах MP4 .

VP9 и AV1

VP9 (преемник VP8) - это кодек, в основном разработанный Google. Он открыт и бесплатен, и реализован во многих браузерах . Его качество почти так же хорошо, как HEVC, а иногда даже лучше (см. Эту статью Netflix). VP9 - это то, что вы получаете, когда смотрите YouTube в браузере, который его поддерживает.

VP9 может быть закодирован с помощью кодера libvpx , и он часто поставляется в контейнерах WebM или MKV .

Некоторые компании собрались вместе, чтобы сформировать еще более сильного конкурента HEVC - но в качестве альтернативы без роялти. AV1 будет преемником VP9, ​​и он основан на том, что должно было стать VP10. Он поддерживается Альянсом открытых медиа (основанным Amazon, Cisco, Google, Intel, Microsoft, Mozilla и Netflix). Подробнее об этом читайте здесь .

Libaom кодер может быть использован для создания AV1 битовых потоков, но это все еще является экспериментальной.


Что такое формат (контейнер)?

До сих пор мы только объясняли необработанный «поток битов», который в основном представляет собой просто необработанные видеоданные. Вы могли бы пойти дальше и посмотреть видео, используя такой сырой битовый поток. Но в большинстве случаев этого просто недостаточно или не практично.

Поэтому вам нужно обернуть видео в контейнер. Есть несколько причин, почему:

  • Может быть, вы хотите аудио вместе с видео
  • Может быть, вы хотите перейти к определенной части видео (например, «перейти к 1: 32: 20.12»)
  • Аудио и видео должны быть идеально синхронизированы
  • Возможно, видео потребуется передать по надежной сети и разбить на пакеты до того, как
  • Видео может даже передаваться по сети с потерями (например, 3G) и разбиваться на пакеты до того, как

По всем этим причинам были изобретены форматы контейнеров, некоторые простые, некоторые более продвинутые. Все, что они делают, это «оборачивают» поток битов видео в другой поток битов.

Контейнер будет синхронизировать видео и аудио кадры в соответствии с их меткой времени представления (PTS), которая гарантирует, что они отображаются в одно и то же время. Он также позаботится о добавлении информации для потоковых серверов, если необходимо, чтобы потоковый сервер знал, когда отправлять какую часть файла.

Давайте посмотрим на некоторые популярные контейнеры.


Популярные контейнеры

Вы найдете видео в основном в следующих контейнерах. Есть и другие, менее популярные, но, как я уже сказал, в основном это:

AVI

Audio Video Interleave - это самый простой контейнер, он просто для чередования аудио и видео. Он был написан в 1992 году и до сих пор используется сегодня, но считается устаревшим, поэтому не используйте его больше.

MP4

также известен как MPEG-4 Part 14 и основан на формате файла QuickTime. Это формат перехода к видео H.264, но он также охватывает HEVC, MPEG-4 Part 2 и MPEG-2.

Этот контейнер может также обернуть только аудио, поэтому вы найдете так много файлов .mp4, которые не являются видео, а представляют собой аудио в кодировке AAC , также в файлах .m4a (просто с другим расширением). Расширение .m4v обычно используется для видеопотоков.

MKV и WebM

Matroska Video (MKV) - это бесплатный формат файлов с открытым исходным кодом, который часто встречается в настоящее время, поскольку он поддерживает практически любой кодек, от H.264 до VP9, ​​и, конечно, также много аудиокодеков.

WebM основан на MKV и в основном используется для видео VP9 и Opus audio - он является контейнером для потокового видео в Интернете, когда используются эти кодеки.

Ogg

Контейнер Ogg является контейнером выбора для видеокодека Theora (и аудиокодека Vorbis ), также созданного Фондом Xiph.Org. Это также бесплатный и открытый исходный код (как и кодек).

FLV

Формат видео Flash был создан Adobe для использования в их потоковых приложениях. Он больше не используется, так как способ потоковой передачи значительно изменился за последние годы.


Популярные кодеки и форматы

Кроме того, какие из следующих кодеков, какие форматы файлов, а какие нет?

  • Quicktime MOV : .mov - это расширение файла для формата файлов QuickTime , который является контейнером, созданным Apple. Этот контейнер был позже адаптирован для MP4. Он может нести все виды кодеков. Quicktime на самом деле представляет собой целую медиа-инфраструктуру, насколько мне известно, он не определяет сам кодек.
  • MPEG (1, 2, 3, 4) : стандарты, определенные группой экспертов по кинематографии. Смотрите мой пост выше для деталей.
  • WMV : Windows Media Video. На самом деле это кодек, заключенный в контейнер Advanced Systems Format , который снова использует расширение .wmv . Странно, но так оно и есть.
  • FFmpeg : Это не кодек и не контейнер. Это библиотека видеоинструментов, которые также позволяют конвертировать различные кодеки и контейнеры. FFmpeg опирается на открытый код libavcodecи libavformatбиблиотеки для создания кодеков и контейнеров соответственно. Большинство видео инструментов, которые вы найдете сегодня, основаны на нем.
  • AVC : синоним для MPEG-4 Part 10 или H.264.
  • DivX : еще один тип кодера для видео MPEG-4 Part 2.
  • Xvid : один тип кодера для видео MPEG-4 Part 2. Это просто бесплатная версия DivX с открытым исходным кодом, что, конечно, привело к противоречиям.
  • H.264 : синоним для MPEG-4 Part 10 или AVC.

На примечании стороны:

Я даже использую правильную терминологию?

Я думаю, что однажды предпочел бы специально использовать «кодек» и «контейнер» вместо «формат», чтобы избежать недоразумений. Формат теоретически может быть любым, потому что кодеки и контейнеры определяют формат (то есть, как должны быть представлены данные).

При этом терминология FFmpeg будет заключаться в использовании «формата» для контейнера. Это также из-за различия между:

  • libavcodecбиблиотека для кодирования / декодирования
  • libavformat, библиотека для контейнеров

33
Вот что можно правильно назвать, отвечая на вопрос. Отлично сработано.
Франческо

1
Отличный ответ, но вы пропустили формат контейнера Ogg.
Игнасио Васкес-Абрамс

7
Это самый удивительный ответ, который я когда-либо видел. Большое спасибо за отличные объяснения! :)
Мердад

@Mehrdad Рад, что я мог бы пролить свет на эту тему. Спасибо :)
slhck

1
Иногда вы хотели бы сделать несколько голосов против ответа :)
Дольф Андринга

3

В общем, медиа-формат - это действительно контейнер, содержащий аудиопоток (некоторого аудиокодека) и видеопоток (некоторого видеокодека), а иногда и дополнительную информацию. большинство «файлов» имеют тип файла на основе контейнера, а не кодека

FFmpeg не является ни контейнером, ни кодеком - это универсальный набор библиотек, кодеков и программного обеспечения для преобразования файлов, который лежит в основе многих конвертеров и музыкальных проигрывателей.

H.264 / AVC и xvid / divx являются кодеками

AVI (файлы divx / xvid), mp4, mpeg являются контейнерами.

Я не уверен насчет quicktime mov - .mov - это контейнер, quicktime - кодек.


Нет кодека "Quicktime". Quicktime - это мультимедийная среда, включающая контейнер .mov, программное обеспечение для кодирования, декодирования и отображения ряда кодеков, а также другие курьезы, такие как Quicktime VR.
STIB

1

Есть кодеки и контейнеры (форматы файлов). Кодек описывает, как данные кодируются / декодируются. Другой описывает, как закодированные данные помещаются в файл.

Большинство медиаплееров поддерживают несколько типов кодеков и контейнеров. Это сбивает с толку, поэтому я предлагаю вам прочитать мои ссылки для получения дополнительной информации


-1

Формат - это имя, данное конкретному типу формата файла и типу сжатия (большая часть видео сжимается, чтобы уменьшить размер), а кодек - это то, что может фактически сжать его, прочитать его и преобразовать в видео, которое вы видите, распаковав его , Другими словами, один тип файла, а другой - часть программного обеспечения.

Обычно мы называем большинство видео по названию формата, поэтому Quicktime MOV, MPEG и WMV являются форматами.

FFmpeg (я никогда не слышал об этом), кажется, является названием программного обеспечения для преобразования различных форматов в другие форматы.

AVC и H.264 одинаковы и представляют собой формат для кодирования HD-видео.

DivX - это коммерчески продаваемый кодек.

Xvid - это кодек для MPEG-4.


1
ffmpeg в значительной степени является бэкендом для 99% конвертеров FOSS.
Подмастерье Компьютерщик

Этот ответ неверен. Из 7 предложений только цифры 6 и 7 верны, даже те, в которых нет деталей.
Jiggunjer
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.