Итак, MPEG-2 придуман для уменьшения количества и потока видео, чтобы оно помещалось на доступные носители и проходило сквозь не особо толстые каналы передачи. Даже если не брать все более входящие в моду форматы High Definition Video (Видео Высокой Четкости), где несжатый видеопоток может заметно превышать 100 Мбит/с, а ограничиться более привычным STV (Стандартным Видео: PAL и NTSC), — минута несжатой движущейся картинки займет на диске (или кассете) целый гигабайт! Поток любопытствующие могут посчитать сами.
Сжимается видео двумя методами: статическими и динамическими. Статическое сжатие — это, в сущности, знакомый всем JPEG-формат. Он анализирует картинку на предмет повторяющихся фрагментов (по мелкости — вплоть до одного пикселя) и записывает их приблизительно так: «точка с параметрами RGB 212, 085, 110 повторяется подряд 24 раза, через 74 пикселя повторяется снова 45 раз…» То есть, вы вполне способны представить себе картинку с белым снежным полем или пасмурным, но без выраженных туч небом, — экономия может выйти очень и очень значительная. Такое сжатие, если оно записывается попиксельно, считается сжатием «без потерь», есть даже специальная разновидность BMP-формата, применяющая подобное сжатие, называется RLE. Однако на картинках с большим разнообразием объектов такая запись экономит уже не так много, и алгоритм (в зависимости от заданного вами конечного объема или условного «качества») выставляет некие огрубляющие условия. Например, точки с уровнем красного от 100 до 112 считать за одинаковые, с уровнем, скажем, 106. Или фрагменты, продолжающиеся не долее 6 пикселей, рассматривать как несуществующие, игнорировать, — и из картинки уходят мелочи, а цвета на ней становятся менее дифференцированными.
Это что касается собственно статического (или JPEG) сжатия, которое оперирует фактически каждым полноцветным пикселем картинки, описываемым тремя цветовыми байтами: 256 градаций красного, столько же — зеленого и столько же — синего. Но видео, для которого и был придуман MPEG, произрастает из старого аналогового телевидения, а оно, после ряда экспериментов, пришло к стандарту передачи цвета другим, цветоразностным, образом: в сигнале в первую очередь идет яркостная составляющая Y (это позволило на первых порах перехода к цветному телевидению организовать совместимость со старыми черно-белыми приемниками), потом — две цветоразностные, U и V, где желтый вычитается сначала из красного, а потом — из синего и множится на коэффициенты, полученные экспериментальным путем (подробнее этот предмет я рассмотрел в «Козлонке» «Y=0,299R+0,587G+0,114B, или Полтораста долларов коту под хвост», ДК #3_2005). Человеческий глаз по-разному воспринимает цвета, что отражают приведенные коэффициенты и что позволило авторам MPEG далеко не в каждом подформате передавать полностью и одну, и другую цветоразностную составляющую. Так, в наиболее распространенном варианте MPEG-сжатия эти данные записываются в формате 4:2:0, показывающим, что яркостная информация Y передается полным байтом, первая цветоразностная U — половинкой, а вторая, V, не передается вообще (цифры здесь довольно условны и тоже произросли из старого аналогового телевидения: 4 означает передачу 256 градаций, 2 — 128). Формат 4:2:0 отнюдь не означает, что мы не досчитаемся каких-то отдельных цветов — они на картинке останутся все, просто будут переданы с неидеальной, но для большинства глаз вполне достаточной точностью. То есть довольно условно цветоразностные составляющие сигнала U и V можно считать значениями по двум осям декартовых координат. Так вот, в MPEG с формулой 4:2:0 цвет записывается полный, но — лишь по одной координатной оси.
Это что касается статики. (Тут имеет смысл отметить, что формат 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 war (война кодеров), правда интеллигентная и не шумная.
Расскажем немного о каждом из кодеров.
Canopus Procoder
Canopus Procoder версии 1.0 в режиме Mastering-Quality кодировал даже на относительно невысокой скорости потока (около 6000 Кбит/с) так, что отличить результат от DV-оригинала было довольно трудно. Но был у первой версии и заметный недостаток: кодирование с наивысшим качеством продолжалось чудовищно долго. Один час исходного видео мог кодироваться до 12–20 часов, в зависимости от качества и/или динамики исходного материала. У Procoder связь между качеством отснятого видео и временем кодирования была прямой и непосредственной. Самый тяжелый материал, такой как бурлящая вода, Procoder мог кодировать в 20–30 раз дольше, чем продолжалась сама съемка.Очевидно, по пожеланиям трудящихся, Canopus весной 2003 года выпустила новый MPEG-2-движок для Procoder, который вошел в версию 1.5 Procoder. Скорость кодирования возросла заметно, но вот с качеством… По мнению многих любителей, Canopus с точки зрения качества просто «сдвинул» вниз режимы кодирования. Иными словами, то, что раньше было Mastering-Quality, исключили вообще, а бывший режим Highest-Quality стал в версии 1.5 Mastering-Quality.
Прошел еще год, и Canopus разродился второй версией. Procoder стал кодировать еще быстрее, обзавелся множеством как довольно полезных, так и почти бесполезных добавок, но качество лучше не стало.
По моему мнению, как было лучшим качество кодирования у самой первой версии Procoder, так и осталось. Что касается времени кодирования — этот недостаток, как и молодость, со временем проходит. На современных двухъядерных процессорах даже тяжелый материал первая версия Procoder кодирует всего в два-четыре раза дольше продолжительности оригинала.
Cinema Craft Encoder (CCE)
Когда-то именно этот кодер считался неофициальным лидером, оставившим далеко позади всех конкурентов. Его стоимость была и остается немаленькой, CCE — один из самых дорогих программных кодеров на рынке.У него — множество настроек, что в принципе позволяет достичь очень высокого качества на конкретном материале. Но в настройках CCE надо уметь разобраться и понять, что и как влияет на результат, поэтому CCE менее дружелюбен, чем Canopus Procoder. К несомненным плюсам CCE следует отнести возможность кодирования «в лоб» для DVD с многокамерной съемкой (angles).
Считается, что CCE по-прежнему остается лучшим кодировщиком для материала, полученного с аналоговых плат видеозахвата, таких, например, как ТВ-тюнеры. Что касается DV-исходников, то CCE все-таки уступает Canopus Procoder в качестве кодирования. Как сказал в свое время один из поклонников CCE: «CCE почему-то выпячивает артефакты DV-кодирования, а Procoder их сглаживает».
Main Concept MPEG Encoder
Пожалуй, Main Concept MPEG Encoder — самый популярный в мире кодер MPEG, причем большинство его пользователей об этом и не подозревает. Дело в том, что Main Concept MPEG Encoder встроен в такие популярные видеоредакторы и программы DVD-авторинга, как Adobe Premiere, Sony Vegas Video, Sony DVD Architect, Ulead MediaStudio Pro, Ulead DVD Movie Factory и Ulead DVD Workshop. Крайне либеральная, а точнее демпинговая ценовая политика компании Main Concept привела к массовому внедрению ее продукта. Сам по себе кодировщик за последние годы серьезно не изменился, разве что стал двухпроходным. О качестве же кодирования можно сказать так: не так хорошо как хотелось бы, но вполне приемлемо.Разумеется, кроме трех кодеров, о которых шла речь выше, существуют и другие, но их популярность гораздо меньше. Например, весьма неплохой кодер входит в состав видеоредактора Avid Liquid Edition, но устанавливать на компьютер этот сложный и мощный пакет только ради одного кодера нет никакого смысла.
Многие видеолюбители, особенно начинающие, используют простую в освоении программу Avid (бывший Pinnacle) Studio, в которой есть свой собственный кодировщик, не отличающийся, к сожалению, высоким качеством кодирования.
Подводя итог, можно сказать, что по большому счету существенной, бросающейся в глаза обычному зрителю, разницы в качестве кодирования в зависимости от применяемого кодера нет. Есть нюансы, которые далеко не всем заметны. На качество результата кодирования более всего будет влиять качество самой съемки. Чем больше «ходила» камера в руках оператора, чем сложнее в динамическом отношении была картинка, чем слабее освещенность в месте съемки, — тем хуже результат кодирования в MPEG-2. Такие дефекты съемки кодер может просто не «вытянуть», вне зависимости от конкретного его производителя. Чудес, увы, не бывает…
Но ежели вы все-таки хотите докопаться до дна и узнать как можно больше, почитайте довольно подробный тест про упомянутые выше кодеры.
Сергей Блохнин