Это что касается статики. (Тут имеет смысл отметить, что формат DV, в котором записывается видео на всех DV-камерах, профессиональных и любительских, подразумевает исключительно статическое, по JPG-алгоритму, сжатие, поэтому минута такого видео занимает чуть меньше 200 мегабайт, а поток получается 25 Мбит/с.) Но MPEG — это еще и сжатие динамическое, тоже разное в зависимости от выбранного подстандарта и заданного пользователем результирующего качества (чаще всего — путем задания результирующего потока).

Динамическое сжатие MPEG устроено приблизительно так: записываются последовательности кадров форматов I (Intra или «Опорные»; обычно, это каждый пятнадцатый кадр), P (Predicative или «Предсказанные») и, наконец, B (Bi-directional или «Двунаправленные»). Опорные кадры представляют собой полную картинку, сжатую только статически (как описано выше). Предсказанные описывают разницу между опорным и текущим, а также вектор движения. То есть, если вы сняли движущийся по улице автомобиль, в предсказанном кадре будет записано, что все окружающее осталось неизменным (кроме того, что открылось после сдвига автомобиля), автомобиль тоже остался неизменным (или практически неизменным), но сдвинулся вперед на такое-то расстояние. Математически сложив опорный кадр с предсказанным мы можем получить достаточно точную ситуацию на момент предсказанного кадра.

Стандарт и на опорные, и на предсказанные кадры в MPEG — довольно жесткий, вне зависимости от подалгоритмов, используемых тем или иным кодером. Третий же вид кадров, двунаправленные, имеет несколько разновидностей, которые зависят как от конкретного кодировщика, так и от выбранного пользователем режима работы. Они тоже предсказывают движение, вперед или назад (получается — «послесказывают»), тоже записывают некую разностную информацию, однако довольно специфическим образом. И если потеря опорного кадра приведет к полному выпадению пятнадцатикадровой последовательности, а предсказанного — к рывку на изображении, то потери двунаправленных смогут только несколько ухудшить плавность, но принципиально ничего не испортят. Существуют профили (например, Sample Profile, «Простой»), которые вообще не предполагают наличия двунаправленных кадров. Короче, если принять количество информации, помещаемое в опорный кадр, за 100%, в кадре предсказанном ее будет процентов 30, а в кадре двунаправленном — 10-12%.

Кадры при MPEG-кодировании разбиваются на группы, называемые GOP, Group of Pictures, которые начинаются с опорного кадра и далее включают предсказываемые и (не обязательно) двунаправленные. Типичный, «стандартный» профиль MPEG выглядит как IBBPBBPBBPBB.

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

Последняя деталь: видео в MPEG можно кодировать одним проходом, когда кодировщик выбирает некий средний алгоритм и одинаково сжимает динамическую, густонаселенную сцену «Штурма Зимнего» и неподвижный пейзаж Микеланджело Антониони. А можно — двумя, что, конечно, дольше и не всегда приводит к заметной разнице, но пробовать надо всегда. При двухпроходном кодировании кодировщик намечает места для вставки двунаправленных кадров и определяет алгоритм, по которому они будут строиться, так что есть шанс получить неплохой результат.

Есть шанс — это потому, что любой кодировщик — совершенный дурак. Хотя люди, которые его придумали, как правило, — очень и очень умные.

Евгений Козловский

Война хорошего с отлиЧным

Несколько лет тому назад, после появления компьютерных DVD-рекордеров, интерес к кодированию видео в MPEG-2 резко возрос. Стало возможным то, о чем ранее не мечтали: запись собственных DVD-Video-дисков. Сейчас это считается чем-то само собой разумеющимся, но всего каких-то три года тому назад казалось чудом.

Первый же вопрос, который возник в связи с появившейся возможностью создавать DVD-диски очевиден: каким кодировщиком кодировать свое бесценное видео и почему именно им?

Исторически существовали две основные группы кодировщиков (кратко — кодеров) MPEG-2: аппаратные, то есть представляющие собой коробку или плату, и программные, никакого железа не требующие. Еще 4-5 лет тому назад аппаратные кодеры MPEG-2 были довольно популярны, даже несмотря на то, что за них, в отличие от программных кодеров, всегда надо было платить. Объяснялась такая любовь к аппаратным кодерам довольно просто. Во-первых, они умели кодировать в реальном времени, чего тогда не умели программные кодеры, а во-вторых — качество кодирования у лучших образцов превосходило качество кодирования программных кодеров. Наибольшую популярность имели платы от ныне почившей в бозе Dazzle и работающей до сих пор в этом жанре компании Canopus. К сожалению, у всех аппаратных кодеров MPEG по труднообъяснимым причинам были проблемы совместимости с материнскими платами, периодически возникали сложности с драйверами и т. п.

Но пару лет тому назад появились внешние аппаратные USB-кодеры, аппаратных проблем с компьютером уже не имевшие, да и заметных проблем со своими программами тоже. Тем не менее популярности у аппаратных кодеров не прибавилось, скорее наоборот. Объясняется это тем, что процессоры стали мощнее, а программное кодирование — быстрее, но, что еще важнее, — людям лень думать на темы кодирования, и подавляющее большинство любителей просто загружает файл с цифровой видеокамеры в программу DVD-авторинга, получая на выходе готовый DVD-Video-диск. Программа сама рассчитает все параметры кодирования и создаст диск, совсем не отвлекая вас от других дел. Кроме этого, аппаратное кодирование захватываемого видео «на лету» в MPEG делает практически невозможным последующее редактирование материала. Сейчас аппаратные кодеры используются только профессионалами, а кодеры для любителей на самом деле — зачастую уже не аппаратные, а программные, хотя и «маскируются» под аппаратные. Типичный пример — Pinnacle Studio Plus 700 USB, который почти все делает программно и для нормальной работы этого как бы аппаратного кодера требуется мощный процессор.

Конечно, аппаратные кодеры умерли не совсем, сохранились они и до сих пор, но выпускаются и используются только в профессиональных целях. Стоимость профессионального MPEG-кодера может достигать десятков тысяч долларов. Например, системы для профессионального DVD-авторинга обычно включают аппаратный кодер/декодер MPEG-2. На такой системе можно немедленно после кодирования просмотреть результат на телевизоре, при необходимости откорректировать картинку, добиваясь лучшего результата. Разумеется, даже при гипотетическом наличии денег на такую систему покупать ее любителю нет никакого смысла — для этой работы нужна соответствующая квалификация плюс всевидящие глаза.

Года три тому назад году ситуация с программными кодерами MPEG-2 практически ничем не отличалась от сегодняшней. И тогда, и сейчас царствуют Cinema Craft Encoder (CCE), Main Concept MPEG Encoder и Canopus Procoder.

Надо заметить, что до появления Canopus Procoder их негласное соревнование было вялотекущим и скучным. В первую очередь из-за того, что запись своих DVD была тогда занятием дорогим, а из-за низкого качества кодирования DV-исходников — непривлекательным хобби. Procoder сразу же после своего выхода потряс всех нас: его качество кодирования DV-видео (а 90% любительского видео и сейчас снимается в DV) заметно превосходило всех конкурентов. Дискуссия о Canopus Procoder, начатая в июле 2002 года на форуме ixbt.com, продолжается и сейчас. Аналогичная дискуссия на самом авторитетном форуме видеолюбителей, возникшая в том же 2002-м, также остается актуальной. Тогда же и началась Encoders war32, правда интеллигентная и не шумная.