91

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

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

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

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

4 ответа4

139

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

  • Кодек (например, 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.Орг Фонд. Это также бесплатно и с открытым исходным кодом (так же, как кодек).

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 , библиотека для контейнеров
3

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

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

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

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

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

1

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

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

-1

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .