Домашняя фабрика грез. Часть 3.
АрхивТехнологизмы (архив)Третья часть статьи о домашнем видео. Программная часть.
В предыдущей части мы рассмотрели телевизионные стандарты и аппаратные интерфейсы. В этой части мы поговорим о программах.
Программная часть
Кодеки
Что это такое и для чего оно надо? Во-первых, расшифруем слово кодек – Codec – COder – DECoder (кодировщик-декодировщик). Программное и/или аппаратное средство для кодирования/ декодирования информации (звука, видео) по определенному алгоритму. Различают кодирование без потери информации (архивирование) и с потерей информации.
Для чего это надо? А давайте подсчитаем объем одной секунды видеоизображения в формате PAL/SECAM. Один пиксель изображения представляет собой три байта (по байту на каждый сигнал – R,G,B). Нормальный размер кадра – 768х576 пикселов. В одной секунде – 25 кадров. Итого 3х768х576х25 = 33177600 байт, приблизительно 32 МЕГАБАЙТА в СЕКУНДЕ!!!
Если Вы помните, теоретическая пропускная способность IDE интерфейса (нашего в Вами жесткого диска) – 100 Мегабит – 10 Мегабайт в секунду! Теоретическая пропускная способность. Реальная – достаточно сильно зависит от модели жесткого диска и от того, в какую область диска (внутренние дорожки или внешние) происходит запись информации. Может колебаться от 3 Мегабайт в секунду до 7-8 Мегабайт в секунду.
А посему – без использования различных методов сжатия/кодирования информации не обойтись.
Как уже упоминалось ранее, человеческий глаз сильнее реагирует на изменение яркости, чем на изменение цвета. Поэтому и используются в телевидении различные схемы кодирования – 4:2:2, 4:1:1, 4:2:0.
В результате применения вышеупомянутых схем кодирования поток данных уменьшается до 22 Мегабайт в секунду и 14 Мегабайт в секунду. Даже при таком уменьшении скорости потока информации мы не можем использовать на обыкновенном компьютере такой поток информации. Плюс к этому для хранения видеопотока требуется нереальный объем жесткого диска.
Поэтому для хранения видео на компьютере используются кодеки с различной степенью сжатия.
В основном для кодирования видео используются компрессия без потерь информации, Wawelet кодирование, MJPEG (Motion JPEG) и MPEG кодирование.
Кодеки с потерей информации используют физиологические свойства организма человека для уменьшения видеопотока.
Kомпрессия без потерь информации
С данным типом компрессии Вы хорошо знакомы – такой тип сжатия используют все архиваторы, например RAR, ZIP, ARJ.
Huffyuv Video Codec
Один из лучших кодеков для захвата видео без потерь. Требует относительно немного процессорных ресурсов (относительно, мало мегагерц не бывает). Однако есть два НО:
1) Кодек оптимизирован для работы с YUY2 представлением сигнала (однако самый массовый чип для любительского захвата видео-Conexant Bt848(Bt878) выдает на-гора именно YUY2 видеосигнал)
2) Степень сжатия данного кодека – 2,5-3:1 – в результате при захвате видео в стандартном для PAL/SECAM разрешении семь минут видео займет 4 Гигабайта.
Если Вы оцифровываете небольшие видеофрагменты для дальнейшей обработки и монтажа, и ваш компьютер позволяет – очень рекомендую использовать данный кодек, который Вы сможете найти по адресу:
www.math.berkeley.edu/~benrg/huffyuv.html
Wawelet кодирование
Одним из основоположников данного направления кодирования видео является корпорация Intel с ее семейством кодеков Indeo.
Помимо кодеков Indeo существуют бесплатные Wawelet кодеки:
MCMW – www.leadtools.com
MJPEG2000 – www.motion-jpeg2000.tv
Пока данный тип кодеков мало используется, однако у данного типа кодирования достаточно большие перспективы
MJPEG (Motion JPEG) кодирование
Сжатие MJPEG основано на удалении лишней пространственной информации в кадре с помощью Дискретного Косинусного Преобразования. MJPEG – это последовательность кадров, обработанная хорошо Вам известным JPEG кодером. Идея JPEG кодирования проста – изображение по специальному алгоритму разбивается на блоки 16х16, к которым в дальнейшем применяется дискретное косинусное преобразование. При этом, в зависимости от выбранного качества, наименее значимые с точки зрения алгоритма цвета убираются (или подменяются более значимыми в этом блоке), что позволяет значительно уменьшить объем хранимой информации.
Данный алгоритм в обычной жизни хорошо себя проявляет на красочных, многоцветных фотографиях, и отвратительно на рисунках, использующих небольшой набор цветов.
Цифровая запись в DV формате основана на аналогичном алгоритме, что и MJPEG.
При использовании MJPEG кодека средний коэффициент сжатия видеосигнала получается порядка 1:5 и видеопоток для S-VHS стандарта составляет 4 мегабайта в секунду, а для DV стандарта составляет – 3,6 мегабайта в секунду.
Алгоритм MJPEG зачастую реализован в железе – этим могут похвастаться полупрофессиональные видеокарты и устройства нелинейного монтажа.
Для ознакомления с данным типом кодеков рекомендую обратить свой взор к следующим ссылкам:
MainConcept Motion JPEG Codec
http://www.mainconcept.com/html/mjpeg_codec.html
Достаточно неплохой кодек. Для использования рекомендуется процессор не ниже Celeron 500.
Morgan Multimedia MJPEG-Software-Codec
http://www.morgan-multimedia.com
Очень навороченный кодек с кучей опций и настроек. Само собой – не бесплатный.
Что он может:
- M-JPEG сжатие воспроизведение в реальном времени без аппаратной поддержки
- MMX, 3DNow! SSE, SSE2 оптимизация
- Поддержка DirectDraw YUV оверлея
- Поддерживается большинство M-JPEG форматов (4:2:2, 4:1:1, 4:2:0, MJPG, dmb1, jpeg)
Pic Video MJPEG Codec
http://www.jpg.com/video/mjpeg.htmОдин из самых быстрых видео кодеков, позволяет захватывать потоковое видео с высоким качеством. Рекомендуется для первоначального захвата видео для дальнейшей обработки и перекодирования в MPEG-2 или MPEG-4
MPEG кодирование
Безусловный фаворит среди кодеков на протяжении нескольких последних лет – MPEG кодек.
Что мы о нем знаем?
Детище комитета Moving Pictures Expert Group, на сегодняшний день семейство насчитывает 4 стандарта и разработка новых стандартов не прекращается.
Алгоритмы MPEG используются для хранения видео на CD дисках (MPEG-1,MPEG-4), DVD дисках (MPEG-2), компрессированого аудио (MPEG-3).
Но обо всем по порядку.
MPEG-1 кодирование
Формат MPEG-1 вышел в свет в 1993 году. Для своего времени (486 процессор, зарождение массового использования компьютерных CD дисков) стандарт был очень прогрессивный.
Поскольку в качестве носителя информации был выбран CD диск, а на момент выхода стандарта CD-ROM приводы были односкоростными, получилось, что скорость видеопотока в формате MPEG-1 ограничена 150 Килобайт в секунду.
В реальной жизни это вылилось в формат NTSC 352х240, 30 кадров в секунду и формат PAL/SECAM 352х288, 25 кадров в секунду.
На первый взгляд очень мало, однако если Вы вспомните предыдущие статьи – как раз получится стандартное VHS качество изображения.
Теперь собственно об алгоритме.
Алгоритм подразумевает использование трех типов кадров (frame):
1) Ключевые кадры. Кадры типа I – Intra frame (вводный кадр). Кадры, которые сжимаются без изменений и особых потерь информации.
2) Кадры типа P – Predirected frame(кадр, использующий предыдущий). При кодировании этих кадров часть информации, которая наличествует в I кадре (или предыдущем P кадре) из P кадра удаляется. При воспроизведении P кадра используется информация из предыдущего I или P кадра.
3) Кадры типа В – Bidirectional frame(двунаправленный кадр). При кодировании этих кадров потери информации более значительны. При воспроизведении В кадра используется информация уже от двух предыдущих I или P кадров.
При кодировании MPEG-1 формируется цепочка кадров,типичная последовательность которых выглядит следующим образом:
IPBBPBBPBBIPBBPBBPBB...
После того, как алгоритм определился с разбиением видеопотока на разные типы кадров, происходит собственно кодирование кадров.
I кадр
Здесь все просто – кадр разбивается на блоки 8х8, которые и обрабатываются кодеком.
P и B кадры
Здесь несколько сложнее.
Для увеличения степени сжатия используется алгоритм предсказания движения, который в качестве входной информации получает блок 8х8 текущего кадра и аналогичные блоки от предыдущих кадров. На выходе данного алгоритма имеем следующую информацию о блоке:
1) вектор движения текущего блока относительно предыдущих
2) разницу между текущим и предыдущими блоками, которая и будет в дальнейшем кодироваться
В результате при использовании данного алгоритма можно получить приблизительно следующий коэффициент сжатия
I:P:B - 1:3:2.5
Затем идет собственно кодирование, проходящее в три стадии:
1) Дискретное косинусное преобразование (Discrete Cosine Transformation, DTC) (Ау JPEG :-))
2) Квантование (Quantization). Перевод сигнала из непрерывной формы представления в дискретную
3) Преобразование из матричной формы хранения в линейную (храним – то в потоке с последовательной выборкой)
Помимо видео происходит кодирование аудио потока. Принципы схожие, останавливаться на аудио кодировании я не стану.
Используются один из трех звуковых кодеков этого семейства – MPEG-1 Layer I, Layer II или Layer 3 (MP3).
Кодеки.
У большинства видеокарт с функцией TV -in и TV Tunerов (если не реализовано в железе) в состав программного обеспечения, входящего в комплект устройств входит и MPEG-1 кодек. Реализация может быть от терпимой до безобразной.
Наиболее распространенные кодеки семейства MPEG-1:
Рекомендации по использованию.
Не рекомендую. Единственное разумное применение – запись телевизионных передач для однократного просмотра и дальнейшего безжалостного уничтожения. Да и то это имеет смысл только на маломощных компьютерах.
MPEG-2 кодирование
Дальнейшее развитие стандарта MPEG-1. На его возникновение и массовое распространение повлияло три вещи – DVD, цифровое спутниковое телевидение и телевидение высокого разрешения – HDTV
Что же нового появилось в MPEG-2?
Помимо выросшего разрешения видеоизображения (размер кадра до 16383х16383 ), появилась возможность работать с блоками 8х8, 16х8 и 16х16, новые алгоритмы сжатия и удаления избыточной информации, изменяемая точность квантования сигнала.
Точность квантования – теперь можно использовать 8, 9, 10 и 11 бит на элемент. Для чего это надо? в статических сценах можно использовать низкий поток данных, для динамических сцен – увеличить точность квантования и, как следствие, потеряв в степени сжатия данных, улучшить качество изображения.
Добавился новый алгоритм удаления избыточной информации. Его суть в том, что в P кадре остается только та часть изображения, которая отличается от предыдущего кадра.
Далее – введено понятие – слои изображения. Поток видеоданных делится на три слоя – base, middle и high. Наиболее приоритетный на данный момент слой кодируется в большим битрейтом, остальные – с меньшим.
И так далее и тому подобное. Стандарт MPEG-2 очень сильно отличается от своего предшественника. Возможностей в нем заложено очень много, реализаций кодеков – так же хватает, причем не всегда полностью совместимых.
Добавлен новый стандарт кодирования звука – MPEG-2 AAC (Advanced Audio Coding). Который помимо новых частот дискретизации сигнала поддерживает стандарт Dolby Surround 5.1.
Для более детального ознакомление со стандартом MPEG-2 рекомендую обратиться к первоисточнику – http://www.mpeg.org
Кодеки.
bbmpeg
Хороший бесплатный кодек, находится по адресу:
http://members.home.net/beyeler/bbmpeg.html
MPEG-4 кодирование
Стандарт MPEG-4 является, так сказать, шагом в сторону. Его основное предназначение (по мнению разработчиков стандарта) – передача достаточно качественного видео в средах (сетях) с относительно малой пропускной способностью. В общем, если переводить на человеческий язык – вещание потокового видео в Интернет (Нечего улыбаться – в Америке в крупных городах канал 2 мегабита в квартиру – нормальное явление).
Основное нововведение в стандарте MPEG-4 – в отличие от предыдущих стандартов, которые делили изображение при обработке на прямоугольники, MPEG-4 оперирует объектами с произвольной формой. Это позволяет достичь большей степени компрессии при сопоставимом качестве, однако взамен требует заведомо более мощного процессора (что-то типа celeron 600 – 700).
Одной из разновидностей кодека (и самый популярный на сегодняшний момент) DivX:)- www.divx.com
На данный момент есть три разновидности кодека DivX:)
стандартный
про с показом рекламы
Коммерческий про (платный) без рекламы
Основное отличие версии про – улучшенная компрессия при кодировании видео (создатели обещают увеличение эффективности до 25% по сравнению со стандартной версией)
Вот пожалуй и все. В cледующих частях мы перейдем собственно к захвату видео и его монтажу.
Ссылки
http://www.3dnews.ru/reviews/video/tv-out/ TV-OUT. Стандарты Автор: Lehmenhttp://www.3dnews.ru/reviews/video/tv-out2/ TV-OUT. Интерфейсы Автор: Lehmen
http://www.3dnews.ru/reviews/multimedia/mpeg/ Семейство форматов MPEG. Часть первая – MPEG-1. Автор: Дан Гьен
http://www.3dnews.ru/reviews/multimedia/mpeg2/ Семейство форматов MPEG. Часть вторая – MPEG-2. Автор: Дан Гьен
http://ixbt.com/multimedia/dv-faq.html FAQ по созданию и редактированию цифрового видео
http://mpeg.boom.ru – разъемы, стандарты, кодеки и многое другое.
http://dshow.narod.ru/codec.htm – Подборка популярных и не очень видео и аудио кодеков
http://tuner.ixbt.com/ – Сайт посвященный TV и FM карточкам, в том числе и программному обеспечению. Очень рекомендую.