История семейства форматов MPEG, к которому собственно и принадлежит стремительно набирающий в последнее время популярность формат MPEG-4, началась в далеком 1988 году. Именно в этом году был основан комитет Moving Pictures Expert Group, что на русский переводится примерно как экспертная группы кинематографии (движущихся изображений), аббревиатура которого - MPEG известна теперь любому, кто имел дело с мультимедиа - компьютерами или с цифровым телевидением. В этом же году была начата разработка формата MPEG-1, который в окончательном виде был выпущен в 1993 году. Несмотря на все очевидные недостатки этого формата, MPEG-1 по-прежнему является одним из наиболее массовых форматов видеосжатия, лишь в последнее время, начиная постепенно сдавать позиции под натиском более новых и совершенных форматов видеокомпрессии, по большей части из этого же семейства.
Надо сказать, что практически все новаторские по тем временам разработки легшие в основу формата MPEG-1, в том или ином виде встречаются и более совершенных форматах данного ряда, поэтому, рассмотрев в подробностях первого представителя этого семейства форматов видеосжатия можно получить общее представление о том, как же работают алгоритмы MPEG.
Формат MPEG-1 начал разрабатываться в те трудно вообразимые времена, когда не было широкодоступных носителей большого объема, в то время, как видеоданные, даже и сжатые, занимали совершенно колоссальные для конца 80-х объемы - средней продолжительности фильм имел размер больше гигабайта. Если кто не помнит, то это была эпоха 286 и 386 процессоров, 4 Мб оперативной памяти и 250 Мб винчестер считались роскошью, а не убогостью, как сейчас, Windows была примочкой для DOS, а не наоборот, а в качестве легко переносимых носителей информации доминировали 5 дюймовые дискеты и только-только появившиеся 3,5" дискеты от фирмы SONY. В таких условиях необходимо было найти носитель, на который можно было бы записать гигабайт информации, при этом этот носитель должен был быть недорогим, иначе ни о какой массовости не могло быть и речи.
И такой носитель был найден. Как раз в эти годы впервые на платформе PC появился такой новый тип носителей информации как CD-ROM диски, которые смогли обеспечить необходимый объем информации. Правда, на один диск фильм в формате MPEG-1 все-таки не вмещался, но что мешало записать его на 2 CD, тем более, что новинка стоила очень недорого? Разумеется, первые CD-ROM проигрыватели были односкоростными, поэтому не стоит удивляться, что максимальная скорость пересылки потока данных (bitstream) в формате MPEG-1 ограничена 150 Кб/сек., что соответствует одной скорости CD-ROM.
Надо сказать, что возможности MPEG-1 не ограничены тем низким разрешением, которое вы все видели при просмотре VIDEO-CD. В самом формате была заложена возможность сжатия и воспроизведения видеоинформации с разрешением вплоть до 4095х4095 и частотой смены кадров до 60 Гц. Но из-за того, что поток передачи данных был ограничен 150 Кб/сек., то есть так называемый Constrained Parameters Bitstream (CPB) - зафиксированная ширина потока передачи данных, разработчики формата, а в дальнейшем и создатели кодеков на его основе, были вынуждены использовать разрешения кадра, оптимизированные под данный CPB. Наиболее широко распространенными являются два таких оптимизированных формата - это формат SIF 352х240, 30 кадров в секунду и урезанный формат PAL/SECAM 352х288, 25 кадров в секунду.
Ну вот, с разрешением определились, теперь можно и посмотреть, как это все сжимается.
В качестве примера рассмотрим урезанный формат PAL/SECAM, который более распространен, чем SIF, хотя оба эти формата за исключением разрешения и частоты смены кадров ничем друг от друга не отличаются.
Урезанная версия формата PAL/SECAM содержит 352 ppl (point per line - точек на линию), 288 lpf (line per frame - линий на кадр) и 25 fps (frame per second - кадров в секунду). Надо сказать, что полноценный стандарт PAL/SECAM имеет параметры в 4 раза большие, чем аналогичные у MPEG-1 (кроме fps). Поэтому принято говорить, что VIDEO-CD имеет четкость в четыре раза хуже, по сравнению с обычным видео.
Что касается глубины цвета, то тут не все так просто, как в компьютерной графике, где на каждый пиксел отводится определенное фиксированное число бит. MPEG-1 использует цветовую схему YСbCr, где Y - это яркостная плоскость, Сb и Cr - плоскости цветовые. Эти плоскости кодируются с разным разрешением. Существуют несколько вариантов кодирования, которые можно представить с следующем виде:
Вариант кодирования | Отношение разрешений Сb/Y (Сr/Y) по горизонтали | Отношение разрешений Сb/Y (Сr/Y) по вертикали |
4:4:4 | 1:1 | 1:1 |
4:2:2 | 1:2 | 1:1 |
4:2:0 | 1:2 | 1:2 |
4:1:1 | 1:4 | 1:1 |
4:1:0 | 1:4 | 1:4 |
Как видно из таблицы Сb и Cr практически всегда кодируются с меньшим разрешением, чем Y. Чем меньше разрешение цветовых плоскостей, тем грубее и неестественнее цветопередача в видеоролике. Разумеется, самым некачественным, но и самым компактным будет последний вариант.
Перед началом кодирования происходит анализ видеоинформации, выбираются ключевые кадры, которые не будут изменяться при сжатии, а так же кадры, при кодировании которых часть информации будет удаляться. Всего выделяется три типа кадров:
При кодировании формируется цепочка кадров разных типов. Наиболее типичная последовательность может выглядеть следующим образом: IBBPBBPBBIBBPBBPBB... Соответственно очередь воспроизведения по номерам кадров будет выглядеть так: 1423765...
По окончании разбивки кадров на разные типы начинается процесс подготовки к кодированию.
С I кадрами процесс подготовки к кодированию происходит достаточно просто - кадр разбивается на блоки. В MPEG-1 блоки имеют размер 8х8 пикселов.
А вот для кадров типа P и B подготовка происходит гораздо сложнее. Для того, чтобы сильнее сжать кадры указанных типов используется алгоритм предсказания движения.
В качестве входной информации алгоритм предсказания движения получает блок 8х8 пикселов текущего кадра и аналогичные блоки от предыдущих кадров (I или P типа). На выходе данного алгоритма имеем следующую информацию о вышеуказанном блоке:
Вся избыточная информация подлежит удалению, благодаря чему и достигается столь высокий коэффициент сжатия, невозможный при сжатии без потерь.
Но у алгоритма предсказания движения есть ограничения. Зачастую в фильмах бывают статические сцены, в которых движения нет или оно незначительно и возникают блоки или целые кадры, в которых невозможно использовать алгоритм предсказания движения. Думаю, вы замечали, что у видеороликов сжатых MPEG-1 качество сцен с небольшим количеством двигающихся объектов заметно выше, чем в сценах с интенсивным движением. Это объясняется тем, что в статических сценах P и B кадры, по сути, представляют собой копии I кадров, потерь практически нет, но и сжатие информации незначительно.
В случае же корректного срабатывания алгоритма предсказания движения, объемы кадров разного типа в байтах соотносятся друг с другом примерно следующим образом - I:P:B как 15:5:2. Как вы видите из данного соотношения, уменьшение объема видеоинформации налицо уже на стадии подготовки к кодированию.
По окончании этой стадии начинается собственно само кодирование. Процесс кодирования содержит в себе 3 стадии:
При кодировании блоки пикселов или вычисленная разница между блоками обрабатывается первым из преобразующим алгоритмов - DTC (дискретное преобразование косинусов). Обычно пиксела в блоке и сами блоки изображения каким-то образом связаны между собой - например однотонный фон, равномерный градиент освещения, повторяющийся узор и т.д. Такая связь называется корреляцией. Алгоритм DTC, используя коррелирующие эффекты, производит преобразование блоков в частотные фурье-компоненты. При этом часть информации теряется за счет выравнивания сильно выделяющихся участков, которые не подчиняются корреляции. После этой процедуры в действие вступает алгоритм Quantization - квантование, который формирует Quantization matrix. Quantization matrix - это матрица квантования, элементами которой являются преобразованные из непрерывной в дискретную форму данные, то есть числа, которые представляют собой значения амплитуды частотных фурье-компонентов. После формирования quantization matrix происходит разбивка частотных коэффициентов на конкретное число значений. Точность частотных коэффициентов фиксирована и составляет 8 бит. После квантования многие коэффициенты в матрице обнуляются. И в качестве завершающей стадии происходит преобразование матрицы в линейную форму.
Все эти преобразования касаются только изображения. Но кроме изображения в практически любом видеофрагменте присутствует так же и звук. Кодирование звука осуществляется отдельным звуковым кодером. По мере развития формата MPEG, звуковые кодеры неоднократно переделывались, становясь все эффективнее. К моменту окончательной стандартизации формата MPEG-1 было создано три звуковых кодера этого семейства - MPEG-1 Layer I, Layer II и Layer 3 (тот самый знаменитый MP3). Принципы кодирования всех этих кодеков основаны на психоакустической модели, которая становилась все более и более совершенной и достигла своего апофеоза для семейства MPEG-1 в алгоритмах Layer-3.
Про психоакустическую модель и принципы сжатия аудиоданных с потерями написано множество статей, в частности статья "Описание формата аудиосжатия MP3", которую вы можете прочитать на этом сайте, поэтому описание аудиокодеров можно опустить, упомянув, единственно о синхронизации аудио- и видеоданных и форматов аудиотреков.
Синхронизация аудио- и видеоданных осуществляется с помощью специально выделенного потока данных под названием System stream. Этот поток содержит встроенный таймер, который работает со скоростью 90 КГц и содержит 2 слоя - системный слой с таймером и служебной информацией для синхронизации кадров с аудиотреком и компрессионный слой с видео- и аудиопотоками.
Под служебной информацией понимаются несколько видов меток, наиболее важными из которых являются метки SCR (System Clock Reference) - инкремент увеличения временного счетчика кодека и PDS (Presentation Data Stamp) - метка начала воспроизведения видеокадра или аудиофрейма.
Ну вот рассказ о MPEG-1 практически подошел к концу, осталось лишь назвать некоторые параметры аудиотреков, которые используются в этом формате.
Качество аудиотреков в MPEG-1 может варьироваться в очень больших пределах - от высококачественных до безобразных. Окончательно все форматы сжатия аудиоданных были стандартизированы в 1992 году европейской комиссией по стандартам ISO.
В зависимости от используемого кодера и степени сжатия аудиоинформация видеоролика может быть представлена в следующем виде: моно, dual mono, стерео, интенсивное стерео (стереосигналы, чьи частоты превышают 2 КГц объединяются в моно), m/s стерео (один канал - сумма сигналов, другой - разница) и по частоте дискретизации могут быть: 48, 44.1и 32 КГц.
На этом хватит о MPEG-1, а в следующих главах речь пойдет о его более чем достойных и перспективных наследниках.