Быстрый поиск
Карта сайта
Ани-рейтинг
http://www.anime-club.info/top100/
Поддержите нас кликом!
A M V
Клипы
Авторы
Библиотека
Рейтинги
Обратная связь
Авторизация





Забыли пароль?
АНИМАГ - Новости сайта



Украинская Баннерная Сеть
Что такое кодек Отправить на e-mail
19.05.2008
Кодек — это сокращение от КОдер/ДЕКодер, и по сути является небольшой программой. Статья расскажет о понятии «кодек».

Кодек всегда является звеном в цепочке программ, которые получают поток данных из источника, производят над ним какие-нибудь хитрые манипуляции, и помещают в какой-либо другой поток данных. Поток данных на входе может быть как файлом, например не зажатым видеофайлом, или зажатым в другом формате (напр. MPEG-1), так и видеопотоком от цифровой камеры или TV. В первом случае вся на жестком диске, и направляет его кодеку (точнее, цепочке программ, звеном которой является кодек). Во втором случае ввером TV-тюнера или драйвером видеокарты, при записи с видеовхода). Цепочка программ, частью которой является кодек, различна в завосимости от того, что Вы делаете. Если Вы кодируете файл, то типичная цепочка программ может быть такой:

* Avisynt поток от драйвера файловой системы и производит определенный препроцессинг, например обрезку черных полос, деинтерлейсинг и ресайз (и много чего еще, в зависимости от Вашего avisynth-скрипта).
* Virtualdub, который получает выходной поток от Avisynth, конвертирует его в понятный себе формат, и производит его препроцессинг (при использовании фильтров). Далее Virtualdub направляет видеопоток кодеку.
* Кодек производит собственно компрессию видеопотока в тот формат, который Вы хотите получить, а затем возвращает уже зажатый видеопоток Virtualdub'у.
* Virtualdub перенаправляет скомпрессированные данные драйверу файловой системы, который в свою очередь помещает их на жесткий диск в том виде, который был указан Virtualdub.

При воспроизведении принцип тот же самый, только цепочка программ будет немного отличаться:

* Драйвер файловой системы направляет поток данных из файла, который Вы хотите проиграть, на вход Вашему медиаплееру (Light Alloy, Crystal Player, Windows Media Player и т. п.).
* Медиаплеер исследует поток данных, и обращается к своему встроенному списку кодеков (как, например, делает Media Player Classic), либо к внешнему списку кодеков (находящихся в реестре Windows) в поисках подходящего кодека. Если плеер его не находит, то выводит на экран сообщение типа «не найден соответствующий декомпрессор», и ожидает, пока Вы не установите нужный кодек. Если плеер находит кодек, то он направляет поток данных кодеку.
* Кодек производит декодирование, и направляет распакованный поток данны в свою очередь перенаправляет его драйверу видеокарты. Видеокарта уже выводит его либо на экран монитора, либо на TV-выход.

Примечание 1. В зависимости от Ваших настроек, сам медиаплеер также может производить некоторую обработку видеопотока, напр. увеличение яркости и/или контраста и т. п.
Примечание 2. Обычно файл содержит более одного потока данных. Как правило файл (напр. avi) содержит один видеопоток и один или более аудиопотоков. Более передовые контейнеры (OGM, Matroska, MP4) могут содержать много потоков данных, включая информацию о главах, субтитры и т. п. Для этих передовых контейнеров также необходимо установить небольшую программку — сплиттер. Это не кодек, но он необходим, чтобы медиаплеер мог понять, как потоки данных хранятся в контейнере. Windows поставляется со встроенной поддержкой контейнеров AVI и MPEG, поэтому большинство плееров без проблем могут проигрывать эти файлы. Существует много форматов контейнеров, каждый из которых имеет свои уникальные особенности. Подробнее о контейнерах см. здесь.

Т.е., другими словами, видео кодеки — специальные алгоритмы упаковки видео изображения. Если их не использовать, видео будет представлять набор.BMP-картинок, по одной на каждый кадр. Поэтому средний фильм будет занимать десятки гигабайт.
Кодеки делятся на два типа:

* Lossless («беспотерьные»), зажимающие видео без потери информации. Т.е., образно говоря, все BMP-шки упаковываютя RAR. Недостаток таких кодеков — низкая степень сжатия. Фильм, зажатый таким кодеком, все равно будет занимать не один гигабайт, поэтому они чаще используются как промежуточный формат при монтаже цифрового видео. Примером таких кодеков может послужить Motion JPEG (www.jpg.com).
* Lossy кодеки зажимают видео с потерей информации. То есть считают некоторую часть информации не нужной и отбрасывают ее, а всю остальную информацию жестоко сжимают. За счет этого достигается высокая степень сжатия. Качесво кодека определяется заложенным алгоритмом, по которому он (кодек) решает, какую информацию можно выбросить, а какую нужно оставить. Примерами таких кодеков являются DivX, Xvid, VP6, Mpeg, H.264.

Принцип работы «потерьных» (lossy) кодеков примерно следующий. В видеопотоке, зажатом одним из этих кодеков, можно выделить I-кадры (Intra) и P-кадры (предсказанные). I-кадр представляет собой одну картинку из видеопотока, сжатую алгоритмом типа JPEG, то есть изображение передается целиком. Если бы каждый кадр фильма пришлось сжимать индивидуально, мы бы никогда не достигли высокой степени сжатия MPEG-4/DivX (чем и страдают lossless-кодеки, т. к. видеопоток, зажатый lossless-кодеком, состоит полностью из I-кадров). Поэтому в потоке используются P-кадры. Принцип их использования легче всего объяснить на примере: представьте себе программу новостей и диктора в ней. В течение программы фон за диктором, по большей части, остается неизменным. Поэтому мы можем отбросить ненужный фон и описывать только изменения, происходящие в избранных участках изображения. Для этого следует поделить изображение на отдельные блоки. Временные изменения блоков кодируются в P кадре. Чтобы еше больше увеличить степень компрессии, были разработаны B-кадры («Bidirectional» — двунаправленный). В них содержится информация об изменении изображения как на основе предыдущего кадра, так и следующего.

Для кодирования фильмов используютя именно «потерьные» (lossy) кодеки. Из них чаще всего используются кодеки, соответствующие стандарту MPEG.

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

Автор: Alex T1000
Взято с: http://amv-creators.6dp.ru
 
След. >
Rambler's Top100 Рейтинг@Mail.ru Счетчик АнимеList - каталог аниме Лучшие проекты о Японии.
Web Studio Pengo.com.ua Published under GFDL Powered by Joomla! LE