Що таке кодек (наприклад, 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 або Альянсом для відкритих медіа, які є конкурентами стандартів 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, частина 2, - це DivX , його відкритий джерело XviD і Nero Digital .

Відео MPEG-4 Частина 2 в основному постачається в контейнері AVI , але MP4 також часто зустрічається.

MPEG-4, частина 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 Частина 2, це наступник MPEG-4, Частина 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, частина 14 і заснований на форматі файлу QuickTime. Це формат для відео H.264, але він також охоплює HEVC, MPEG-4, частина 2 та MPEG-2.

Цей контейнер також може містити лише аудіо, тому ви знайдете стільки файлів .mp4, що не є відео, а швидше аудіо з кодуванням AAC , також у файлах .m4a (просто інше розширення). Розширення .m4v зазвичай приймається для відеопотоків.

MKV та WebM

Matroska Video (MKV) - це відкритий і безкоштовний формат файлів, який часто зустрічається в наш час, оскільки він підтримує в основному будь-який кодек, від H.264 до VP9, ​​і, звичайно, також багато аудіо кодеків.

WebM заснований на MKV і в основному використовується для відео VP9 та аудіо Opus - це контейнер вибору для веб-потокового відео при використанні цих кодеків.

Яйце

Контейнер Ogg - це контейнер вибору для відео кодека Theora (та аудіокодека Vorbis ), також створеного Фондом Xiph.Org. Це також безкоштовний та відкритий код (як і кодек).

FLV

Формат Flash відео був створений компанією Adobe для використання в їх потокових програмах. Він вже не використовується так багато, оскільки спосіб потокової передачі значно змінився за останні роки.


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

Крім того, які з наведених нижче є кодеками, які формати файлів, а які - ні одним?

  • Quicktime MOV : .mov - це розширення файлу для формату файлів QuickTime , який є контейнером, створеним Apple. Пізніше цей контейнер був адаптований для MP4. Він може переносити всі види кодеків. Quicktime - це фактично цілий медіа-каркас, він насправді не визначає жодного кодеку, що стосується мене.
  • MPEG (1, 2, 3, 4) : Стандарти, визначені Групою експертів з кінофільму. Детальніше див. У моєму дописі вище
  • WMV : Відео Windows Media. Це фактично кодек, загорнутий у контейнер Advanced System Format , який знову використовує розширення .wmv . Дивно, але так воно і є.
  • FFmpeg : Це ні кодек, ні контейнер. Це бібліотека відеоінструментів, яка також дозволяє конвертувати між різними кодеками та контейнерами. FFmpeg спирається на відкритий код libavcodecта libavformatбібліотеки для створення кодеків та контейнерів відповідно. Більшість інструментів для відео, які ви знайдете сьогодні, засновані на ньому.
  • AVC : синонім MPEG-4, частина 10 або H.264.
  • DivX : ще один тип кодера для відео MPEG-4, частина 2.
  • Xvid : Один тип кодера для відео MPEG-4, частина 2. Це просто відкрита, безкоштовна версія DivX, що, звичайно, призвело до суперечок.
  • H.264 : Синонім MPEG-4, частина 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.
стиб

1

є кодеки та контейнери (формати файлів). Кодек описує, як дані кодуються / декодуються. Інший описує, як кодовані дані розміщуються всередині файлу.

Більшість медіаплеєрів підтримують кілька типів кодеків та контейнерів. Це заплутано, тому я пропоную вам прочитати мої посилання для отримання додаткової інформації


-1

Формат - це ім'я, яке надається конкретному типу файлу та типу стиснення (більшість відео стискається, щоб зменшити розмір), а кодек - це те, що може насправді його стиснути, прочитати та перекласти у відео, яке ви бачите, розпакувавши його . Іншими словами, один - це тип файлу, а інший - програмне забезпечення.

Зазвичай ми називаємо більшість відео за назвою формату, тому Quicktime MOV, MPEG і WMV - це формати.

FFmpeg (я ніколи про це не чув) називається програмним забезпеченням для перетворення різних форматів в інші формати.

AVC і H.264 однакові і є форматом для кодування HD відео.

DivX - кодек, комерційно продається.

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


1
ffmpeg є значною мірою резервним для 99% FOSS-перетворювачів.
Подорожник Geek

Ця відповідь неправильна. З 7 речень правильними є лише числа 6 та 7, навіть у них немає деталей.
jiggunjer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.