Обычный видеофайл содержит в себе видеодорожку, одну или несколько дорожек со звуком, одну или несколько дорожек с субтитрами, служебную информацию об используемых форматах сжатия, так называемый индекс (блок с адресами расположения конкретных участков записи, применяется во время «перемотки»), набор текстовых полей. Формат, в котором хранится эта информация в файле, именуется контейнером. Наиболее популярным на данный момент является контейнер AVI (Audio and Video Interleaved), достаточно распространены MPEG1/2 (расширения файлов – mpg/mpe/vob), Advanced Streaming Format (asf), OGG Media (ogg), Matroska (mkv), Real Media (rm/rv/ram), QuickTime (mov/qt), начал завоевывать аудиторию контейнер MPEG4 (mp4). Кроме того, существует еще DivX Media (divx), появившийся вместе с шестой версией одноименного кодека и представляющий собой расширенный, но обратносовместимый вариант контейнера AVI. Сейчас DivX Media жалуют немногие, и, скорее всего, он не приживется.
Для извлечения из контейнера потоков видео, аудио и субтитров и их разделения используются специальные библиотеки Windows – сплиттеры, или демультиплексоры. По умолчанию в Windows (начиная с Win2000) имеются сплиттеры для AVI, MPEG1/2 и ASF. Все остальные необходимо устанавливать отдельно, что будет подробно описано ниже.
После разделения каждый из потоков файла должен быть декодирован (разжат). Для этого существуют соответствующие библиотеки, называемые кодеками. Термин «кодек» является сокращением от «кодер-декодер» и отражает две задачи, которые такая библиотека может решать – сжатие видео в свой формат и его распаковка для воспроизведения. К слову, кодек не обязательно выполняет обе функции, существуют и такие, которые могут только первое или только второе. Скажем еще, что сжимающая часть кодека часто именуется не кодером, а энкодером.
Видеокодеки бывают нескольких типов – Video for Windows (VfW), DirectShow (DSH) и DirectX Media Object (DMO). Практически во всех плеерах при воспроизведении применяется DirectShow; а кодеки VfW используются некоторыми программами для сжатия видео, в частности очень популярной VirtualDub/VirtualDubMod. Кодеки типа DMO являются скорее подвидом DirectShow и отличаются тем, что часть их функций перекладывается на приложение, воспроизводящее видео, и по этой причине подобный тип не особо популярен. Аудиокодеки также делятся на несколько видов – Audio Compression Manager (ACM), использующийся в паре с VfW, и аналогичные видео DirectShow и DirectX Media Object. Специальные коды – FourCC (видео) и TwinCC (аудио) – описывают формат сжатия картинки и звука, а также определяют, что нужно для их декодирования. Однако для воспроизведения видеоряда не обязательно должен применяться тот же кодек, что и для компрессии.
Форматы сжатия видео
- Наиболее популярным является MPEG4, представленный в виде нескольких слегка различающихся кодеков. Сам стандарт состоит из 19 частей, каждая из которых описывает определенные возможности кодека, и еще 3 находятся в процессе разработки. Все имеющиеся сейчас кодеки MPEG4, за исключением принадлежащих к стандарту H.264, представляют собой реализацию MPEG4 Part 2. Кодеки стандарта H.264 являются реализацией MPEG4 Part 10. Наиболее известными кодеками формата MPEG4 являются DivX, XviD и Windows Media Video. Кроме обычных, существуют и так называемые HD-версии, которые отличаются большим поддерживаемым разрешением – до 1920×1080 точек.
- Второй по популярности (но первым по качеству) – это формат MPEG2. В нем кодируется видео на дисках DVD-Video и ведется бóльшая часть спутникового вещания. По сравнению с MPEG4 для кодирования информации с тем же качеством формату MPEG2 необходим больший битрейт. Преимущество же MPEG2 состоит в том, что ему доступны более высокие битрейты (вплоть до 25 Mbps), а кроме того, видео в MPEG2 не страдает некоторыми «болезнями» MPEG4 (вроде ступенчатости на плавном цветовом переходе).
- Формат MPEG1 на данный момент практически исчез из обихода, его можно встретить разве что в старых роликах или на Video-CD. Средства его декодирования уже давно встроены в систему.
Как было сказано выше, информация о том, каким именно кодеком упаковано видео в файле, представляется в виде FourCC-кода, состоящего из четырех символов. Каждый кодек имеет свой уникальный FourCC-код, однако в целях совместимости иногда при кодировании указывается «чужой» FourCC-код. Допустим, если видео планируется смотреть на стационарном плеере, то при сжатии его с помощью FFDshow стоит указать FourCC не FFDS, а DivX или XviD, иначе файл почти наверняка не воспроизведется.
Материал с сайта www.itc.ua