Кодеки и контейнеры, образовательная мини-статья

Данная статья предназначена для отсылания сюда тех, кто пытается что-то "конвертить", не понимая, что они делают и зачем.

Чтобы максимально эффективно работать с любым объектом нужно понимать как он устроен. Если видеофайл для вас - таинственная чёрная коробка, внутри которой творятся загадочные штуки, возможно не без помощи чёрной магии, - эффективность ваша будет минимальна.

Итак. Вся информация в компьютере сформирована в виде файлов. Это, надеюсь, ни для кого не сюрприз. Вот от данного базового понятия мы и пойдём.



Всякий видеофайл обязательно должен представлять из себя контейнер. Контейнер - это хранилище для содержимого. Бывают хранилища различной структуры - это форматы контейнеров. Вот например коробка для бенто - это пример контейнера. В неё можно положить суши, а можно темпуру. Что можно положить в видеоконтейнер? Ну как минимум - изображение и звук, по одной штуке. Это такой набор, без которого уже и смотреть нечего. Что можно положить по максимуму? Современный контейнер матрёшка позволяет засунуть в себя несколько видео и аудиодорожек, графические и текстовые субтитры, шрифты для их отображения, картинки и сам не знаю, что ещё.

Возвращаясь к примеру коробки с бенто, отметим, что мисо в неё наливать нельзя - вытечет на фиг. Не всякий контейнер может принять в себя любой поток. Есть ограничения на совместимость, усложняющие жизнь.

Примеры контейнеров: mpeg, avi, mkv, mp4, ogm, vob, mov, rm, divx, asf. Не надо долго присматриваться к списку, чтобы понять, что это стандартные расширения файлов. Разумеется. Потому что файл = контейнер.

Внутри контейнера хранятся потоки или дорожки. Эти потоки имеют свой формат, именуемый кодеком. И вот эту разницу надо особенно чётко понимать. Контейнер - это формат файла. А кодек - это формат потока в нём. Это две независимые
вещи. Да, есть некоторые неразрывно связанные контейнеры и кодеки. Например, в контейнере Real Media могут храниться исключительно потоки в формате Real Video и Real Audio. И наоборот, ни в каких других контейнерах (почти - как меня уже успели поправить) эти форматы храниться не могут. Но они всё равно остаются разными понятиями, которые не надо смешивать.

В понятие кодека обычно включают следующие аспекты:
1) Собственно формат
хранения данных.
2) Программное обеспечение, позволяющее закодировать информацию в данный формат и/или раскодировать её из него.

Примеры видео кодеков: divx, xvid, avc, x264, vp6, vp7, mpeg-1, mpeg-2, huffyuv.
Примеры аудио кодеков: mp3, ogg, ac3, aac.

В то время как контейнеры, как правило, различают по расширениям файлов, кодеки различают по четырёхсимвольному FourCC коду.

Понятие кодека как правило связано с неким ужатием. Сырые (raw, uncompressed) потоки тоже имеют свои форматы, но им декодирование не нужно и потому понятие кодека к ним обычно не применяется.

А теперь рассмотрим наиболее популярные контейнеры, кодеки и связанные с ними проблемы. Проблемы у нас бывают как правило двух типов: связанные с проигрыванием и связанные с редактированием.

MPEG
- один из самых древних контейнеров. В нём может храниться исключительно видео в фомате mpeg-1 и аудио в формате mp2. Причём по-хорошему - с довольно строгими ограничениями по размеру изображения и битрейту звука. В силу древности и примитивности формата его понимают практически все плееры и редакторы. Но по тем же самым причинам его почти невозможно стало встретить. Никому такое барахло не нужно.

AVI - тоже довольно древний, но пока ещё весьма полезный контейнер. Хорош он тем, что его понимают опять же все плееры и все редакторы. Влезают в него почти все mpeg-based форматы, а также многие совместимые с ними. В avi не влезают
следующие видеоформаты: avc (также известный как Nero AVC или Nero H.264), wmv ниже 9 версии, а также всякая мишура типа real video, которая изначально спроектирована несовместимой ни с чем на свете. Из звуков - якобы всё что угодно, кроме Vorbis ogg.

OGM
- это как раз то место, куда лезет Vorbis ogg. Ибо формат был создан на основе этого самого ogg. На данный момент практически вытеснен матрёшкой ибо она умеет всё то же самое, только лучше. И точно также не поддерживается никакими мейнстримовыми программами. Лучший известный софт для обработки - VirtualDubMod.

MKV
- матрёшка, в которую влезает практически что угодно, кроме flash video. Но в силу её сложности и универсальности с нею до сих пор можно сделать только такие вещи как: собрать, посмотреть и разобрать.

MP4
- это фактически современный MPEG. Принимает в себя исключительно вещи, совместимые со стандартом MPEG, но зато включая его новейшие разновидности. В первую очередь это видео в H.264 и аудио в aac.

VOB
- специальный контейнер для DVD. Хранит в себе видео исключительно в формате mpeg-2. Зато звук может быть в самых разных форматах. Но самым распространённым вариантом является Dolby Digital (ac3).

Уф, устал. Концовку придётся скомкать.
Короче, если у вас проблемы с файлом, разберитесь прежде всего, это проблема с кодеком или с контейнером. Потому что решаются они приципиально по-разному. Иногда достаточно лишь переместить видеопоток из одного контейнера в другой (процесс, занимающий не больше минуты и не ухудшающий качества) вместо того, чтобы устраивать конвертацию (потратите несколько часов и испортите картинку), которую вам наверняка устроят однокнопочные конвертеры, столь любимые ламерами всех мастей.