Архивы: по дате | по разделам | по авторам

Пожатое видео

Архив
автор : Филипп (Finar) Казаков   26.05.2005

Кто как, а видеомонтажеры-любители радовались удешевлению DVD-RW приводов словно дети.

Кто как, а видеомонтажеры-любители радовались удешевлению DVD-RW приводов словно дети. Емкости CD-R с трудом хватало для хранения качественного видео, и приход даже однослойных DVD-R в домашние ПК позволил серьезно уменьшить количество записываемых архивных болванок. Как следствие, в прошлом году разразился бум программ для авторинга DVD-Video. В какой-то момент могло показаться, что внимание общественности безвозвратно смещается в сторону высокобитрейтных(То есть с небольшим коэффициентом сжатия) алгоритмов сжатия видео (в первую очередь это MPEG2) и записи DVD.

Однако сравнительный обзор актуальных кодеков 2004 года(www.doom9.org/index.html?/codecs-104-1.htm), вышедший под Новый год на сайте doom9.org, заставил снова вспомнить о кодеках с высоким коэффициентом сжатия. В центре событий оказалась фирма Nero и кодек Ateme h.264, реализованный в ее NeroVision Express.

На сайте кодек получил весьма лестный отзыв, а именно занял первое место. «Fide, sed cui fides, vide» («Доверяй, но смотри, кому доверяешь») — взяв на вооружение это мудрое высказывание, я решил лично ознакомиться с предметом.

В каком же виде Ahead предлагает нам знакомиться с новейшими технологиями компрессии видео? Должен вас сразу расстроить: так как новый формат закрытый, официально он распространяется исключительно в фирменном программном пакете под названием Nero Vision Express. В него входит одноименный Nero Vision Express (для захвата, легкого монтажа и записи видео на CD), ShowTime (проигрыватель файлов), PhotoSnap (для обработки фотографий), MediaHome (этакий фрейм-сервер для рассылки медиапотоков по разным устройствам и плейерам компьютера. Впрочем, признаюсь, MediaHome я ни разу так и не запустил, а значит, могу ошибаться) и Recode. Вот этот последний и представляет для нас интерес в плане кодирования видео, а все остальные преполезные домохозяйские заменители «Фотошопа» и «Премьера» ложатся на уставшие спины российских модемов тридцатимегабайтным грузом! Остается только посочувствовать многим соотечественникам, лишенным широкополосного доступа. Мало того что вместо небольшой утилиты для конвертирования придется тянуть из Сети 34 мега, но даже для просмотра уже закодированных файлов понадобится качать все, так как выложить в Сеть отдельный DirectShow-декодер Nero пожадничала(Тут, правда, есть выход. Декодер h.264 уже появился в популярном ffdshow-фильтре для декодирования всевозможных видеоформатов). Однако нет худа без добра: полнофункциональный демо-набор можно бесплатно скачать с www.nero.com/en/nero-prog.php.

Я не случайно выбрал для сравнения именно DivX. Хотя на форумах по сей день спорят на темы вроде «DivX vs Xvid vs VP6», у массового пользователя именно DivX пользуется наибольшей популярностью. Недаром он стал фактически нарицательным именем видеодиска.

Для теста был взят небольшой отрывок c лицензионного DVD «Terminator 2», наполненный как статичными, так и динамичными сценами. Двухпроходное кодирование DivX 5.2.1 производилось в VirtualDUB MOD 1.5.10 со следующими настройками(Для приближения к реальной ситуации, в которой большинство пользователей кодирует видео, дополнительные «хитрые» опции кодека не использовались. Впрочем, как вы скоро убедитесь, принципиально на итогах сравнения это сказаться не могло):

  • пресет Home Theater;
  • Encode Performance — Slow;
  • Resize до 640х480;
  • Deinterlace выключен, так как исходный отрывок прогрессивный.

    Настройки Nero Recode:
  • пресет Maximum Definition AVC;
  • Resizе до 640х480;
  • два прохода;
  • Mode/Speed — Normal.
  • Методика тестирования достаточно проста. Качество кодирования имеет смысл оценивать, варьируя значение количества информации на пиксел результирующего потока. Этот параметр зависит от двух переменных — битрейта и разрешения. Менять разрешение бессмысленно — при значениях ниже 512х384 квантованность изображения начнет сказываться на качестве не меньше, чем компрессия. С другой стороны, кодирование интерполированного изображения при разрешениях выше 720х576 может дать некорректные результаты. Поэтому разрешение изначально фиксируется, а изменяется лишь битрейт. Для приближения к реальным условиям устанавливаем разрешение ниже оригинала — надо ж посмотреть, не принесут ли кодеки сюрпризов во время Resize…

    Считается, что для получения качественного результата при кодировании DVD в DivX необходимо, чтобы соотношение bit/pixel результирующего потока было не меньше 0,2. Это значение я и взял за отправную точку. Несложные математические расчеты показывают, что при разрешении 640х480 такое соотношение bit/pixel достигается при битрейте 1500 кбит/с. Ориентируясь на это значение, я провел кодирование с пятью разными битрейтами вплоть до 500 кбит/с, при которых соотношение bit/pixel опустилось до смешных 0,066(Настройки декодеров отличались от «умолчальных» только принудительной установкой максимального постпроцессинга).

    За качество, однако, приходится платить временем кодирования и декодирования. Сжатие в h.264 происходит очень медленно. На моем компьютере с процессором Pentium 4 Northwood 3.06@3.33 ГГц кодирование по h.264 выполнялось со средней скоростью 6 fps при первом и втором проходе. Между тем DivX выдал 11 fps на первом и 17 fps на втором проходе. При максимальных настройках качества h.264, скорость кодирования снижается до 4 fps. Таким образом, двухпроходное кодирование двухчасового фильма с максимальным качеством даже на современном компьютере займет примерно сутки.

    С декодированием ситуация не лучше. На вышеупомянутом компьютере проблем с получившимися файлами не возникло даже при максимальном уровне постпроцессинга. А вот моя вторая машина с ЦП Celeron 1.7@2.0 ГГц с трудом справилась с задачей вовсе без постпроцессинга, — загрузка процессора при воспроизведении держалась под 100%.

    Применительная часть

    Первое, что бросается в глаза, — что на выходе Nero Recode мы получаем вовсе не avi-файл, а mp4. По сути, это ничего не меняет — так же как avi и mpg, mp4 является контейнером, позволяющим хранить внутри себя несколько медиапотоков. Кроме звука и видео, в mp4-файле, создаваемом Nero Recode, могут храниться субтитры и информация о chapter’ах.

    При установке Nero Vision Express в систему интегрируется DirectShow-декодер mp4-файлов, после чего любой Windows-плейер научается воспроизводить вышеуказанные файлы. Все возможности контейнера поддерживает Nero ShowTime — идущий в комплекте плейер. Скорее всего, выход обновлений с корректной поддержкой контейнера mp4 для всех популярный плейеров — дело времени. Мой любимый Gabest Classic Media Player не самой свежей версии, например, поддерживает все «фичи» нового контейнера, за исключением смены аудиопотока.

    Другое дело — стационарные плейеры. Вот здесь Divx остается безоговорочным лидером. Хоть сейчас и начали появляться плейеры с поддержкой Ateme h.264(www.siemssen-resale.de), все же доля DivX-совместимых плейеров несравнимо больше.

    Видимо, для соблюдения баланса; насколько удачным у Ahead получился сам кодек(Впрочем, к самому кодеку Ahead имеет отдаленное отношение. Его разработкой занимается Ateme, а Ahead просто купила проект целиком), настолько же неудачным оказалось ПО для работы с ним. Явно сделана ставка на неискушенных пользователей, из-за чего логичность процесса настройки отдана в жертву округлости кнопочек и плавности выскакивания менюшек, в общем — неудобной нестандартной графической оболочке. Очень характерно настраивается битрейт — курсором можно выбрать значение малюсеньким слайдером с шагом 50 кбит/с, а можно выставить такую опцию, чтобы «конечная фильма» вписалась в заданный объем в мегабайтах. Только вот размер меньше 30 Мбайт поставить почему-то нельзя! И все это вместо того, чтобы просто сделать поле для ввода цифрового значения битрейта. Теперь, наверное, понятно, почему в моем тесте значения битрейтов получились некруглые.

    По замыслу разработчиков, Nero Recode должна удовлетворять всем потребностям среднестатистического пользователя, и поэтому никакой интеграции со сторонним софтом средствами программы не предусмотрено. При этом, как ни странно, возможности по предварительной обработке видео в Recode довольно скудны: можно подрезать края кадра, сделать Resize и Deinterlace. Для торопливых пользователей предусмотрены автоматические режимы этих фильтров, однако меня их работа не впечатлила: Deinterlace, например, в автоматическом режиме включается почти на любом материале, неверно оценивая его сущность и, следовательно, необходимость применения фильтра.

    В настройках программы можно выбрать преполезный пункт, заставляющий Recode оценивать необходимость второго прохода при кодировании. Ведь далеко не всякий материал требует второго прохода. «Чистый» DVD, например, от двухпроходного кодирования несомненно выиграет, а вот «шумный» сигнал, записанный со старой VHS-кассеты — едва ли(Оно и понятно. Что делает кодек при первом проходе? Оценивает количество «движения» во всех кадрах, для того чтобы на втором проходе более эффективно перераспределить битрейт. Ежели все кадры в сигнале покрыты пусть и едва заметными на глаз помехами, почти все усилия кодека сведутся на нет — все равно «рябь» из мелких помех помешает ему «разглядеть» основное движение в кадре). На глаз же определить, нужен второй проход фильму или нет, иногда бывает трудно. Совершив первый проход, Recode оценит материал и в случае чего предложит пройтись еще раз. Кстати, получившееся после первого прохода кино можно оценить глазом и, если качество вас устроит, от второго отказаться.

    Сделав необходимые настройки по обработке изображения, можно получить доступ и к тонким настройкам кодека. Тут и настройка GOP-структуры, и соотношение скорость/качество, и специфические «фичи» стандарта MPEG4 AVC, и настройки психовизуальных параметров.

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

    Стандарт MPEG4, вообще говоря, гораздо шире, чем DivX в общепринятом понимании. Чтобы определиться с тем, что, собственно, такое Ateme h.264, давайте уточним некоторые понятия, из которых складывается MPEG4.

    Контейнер mp4

    Контейнер в видеомонтаже, как и в жизни, — приспособление для хранения и транспортировки грузов — только цифровых. Грузы — медиапотоки — перемещаемые в одном и том же контейнере, могут быть упакованы по-разному — с использованием разных кодеков. Однако контейнер не определяет однозначно ни компрессор, который используется для кодирования контента, ни параметры самих потоков, ни даже расширения выходного файла. Самым популярным на сегодня контейнером, несомненно, является AVI. Этот несовершенный и устаревший контейнер настолько вошел в нашу жизнь, что стал нарицательным обозначением вообще любого видео на ПК — «авишкой». Из-за своих структурных особенностей и почтенного возраста он создает множество проблем, поэтому сегодня разработчики стараются постепенно избавляться от этого атавизма в пользу более удобных решений. Одним из них является контейнер mp4, предназначенный для хранения самого разного MPEG4-контента.

    Стандарты MPEG4 ASP и AVC

    Важно понимать разницу между компрессором и стандартом. Стандарт описывает инструменты и методы кодирования медиапотока. Проще говоря, он определяет группу технических приемов, которые могут использоваться при сжатии (например, B-Frames, Global Motion Compensation и др.), и допустимые параметры медиапотоков (разрешение, битрейт, частоту кадров и т. д.). По мере совершенствования методик сжатия, увеличения быстродействия компьютеров и возможностей аппаратных плейеров вынужден развиваться и стандарт. На текущий момент в MPEG4 широко распространено два подраздела видеостандартов — MPEG4 ASP (Advanced Simple Profile) и MPEG4 AVC (Advanced Video Coding) или, по-другому, h.264. MPEG4 AVC отличается от ASP целым рядом дополнительных приемов кодирования.

    Компрессор Ateme h.264

    Компрессор же (или, по-народному, кодек) — это метод преобразования информации, позволяющий на выходе получить файл, соответствующий стандарту. Популярные в массах компрессоры — Xvid, DivX, 3ivx, NeroDigital — кодируют в стандарте MPEG4 ASP и теоретически создают полностью совместимые с ним и друг с другом файлы. Декодеры от каждого из них по идее должны поддерживать выходные файлы любого другого. Для MPEG4 AVC аналогично имеется несколько кодеков от разных производителей, умеющих создавать h.264-файлы. Это бесплатный x264, платный Main Concept, несколько других и наконец — Ateme h.264, которому и посвящена эта статья.

    Подробнее о стандартах MPEG4 на русском языке можно почитать здесь: http://www.pogo-stick.nm.ru/avinfo/MPEG4info.htm.

    Обхитрительная часть

    Nero Recode позиционируется как средство резервного копирования ваших собственных DVD-дисков. Пережимать лицензионные DVD с защитой от копирования она официально не умеет. Что ж, научить ее этому не так уж трудно.

    Для начала надо указать DVD-привод с диском внутри или папку VIDEO_TS на HDD. Если контент защищен или в нем содержатся не все оригинальные файлы, Recode страшно испугается, что вот-вот нарушит авторские права, и открывать диск откажется. С защитой легко справится наверняка знакомый вам DVD Decryptor(www.dvddecrypter.com), а что делать, если к вам попал уже порезанный нашими пиратами однослойный диск, в котором от оригинального остался только сам фильм, а все дополнительные материалы удалены? Импортировать такой диск Recode откажется напрочь, но есть простой способ обхитрить ее.

    Кроме DVD целиком, на вход Recode можно подать обыкновенные файлы. Среди длинного списка поддерживаемых форматов есть и неприметный пункт .avs . Если вы когда-нибудь слышали об AVISynth(www.avisynth.org), то наверняка оцените важность этого пункта. AVISynth — это фрейм-сервер, позволяющий посредством подключаемых плагинов декодировать видео практически любого формата, наложить на него фильтры и передать его дальше любой DirectShow-совместимой программе. В отличие от большинства программных средств обработки видео настройка AVISynth производится с помощью скриптов. Сам AVISynth интегрируется в систему и, к удивлению незнакомых с ним пользователей, даже не имеет exe’шника. Так как скриптовый способ настройки нетривиален, я позволю себе описать принцип его работы на примере с Nero Recode.

    Начало обработки фильма напоминает работу с Gordian Knot[Известнейший пакет для преобразования DVD-Divx (см. «КТ» #463)], недаром AVISynth лежит в его основе. Скопированные с DVD vob-файлы для начала нужно «прогнать» через DVD2AVI, получив на выходе файл проекта .d2v и файл с отдельной звуковой дорожкой в формате ac3. Теперь создаем текстовый файл следующего содержания (пути, естественно, будут отличаться):

    LoadPlugin(”D:\PROGRA~1\GORDIA~1\mpeg2dec3.dll”)
    mpeg2source(”W:\Video\Subrosa\DeepthoughtEmotion.d2v”),
    где mpeg2dec3.dll — библиотека для декодирования mpeg2 (качается отдельно), а d2v — файл проекта DVD2AVI.

    Сохраняем файл, меняем его расширение на .avs, и всё[На самом деле, возможности AVISynth гораздо богаче, чем могло показаться. После указания источника видео можно подключить dll-плагины по обработке видео. Их параметры тоже вручную указываются в этом же файле. Таким образом, на выходе можно получить уже обработанную картинку, с обрезанными черными полосами и в нужном разрешении. Ассортимент плагинов для AVISynth очень широк, чуть ли не шире, чем для VirtualDUB’a, так что в AVISynth’e стоит научиться работать. Почитать о нем подробнее можно здесь:

    www.xoro.ru/docs/mpeg4/articles/s82.htm, а базовые приемы можно понять, изучив в текстовом режиме avs-файл, создаваемый Gordian Knot’ом во время работы]! Теперь сам файл .avs воспроизводится любым плейером, а значит, может использоваться и в Nero Recode. Довольно ухмыляясь, смотрим, как Recode прилежно перекодирует видео, которое еще пять минут назад отказывался кушать.

    Платой за обман кодировщика(Разумеется, не считая наказания, предусмотренного законом) станет невозможность расставить чаптеры в автоматическом режиме, отсутствие субтитров да звуковой ac3-файл, лежащий отдельно от видео. Проблемой интеграции субтитров я, честно говоря, не занимался, так как считаю, что резоннее хранить их отдельным файлом вне контейнера, а о присоединении звука поговорим чуть ниже.

    «Что за авторы пошли — все сломать да украсть учат», — возмутится законопослушный читатель. Спешу успокоить: про взлом DVD — это была лишь прелюдия к рассказу об истинном предназначении AVISynth’a в процессе приручения Nero Recode. Вот, представьте, записали вы с телеэфира кино и хотите его закодировать в Ateme h.264. Да не просто закодировать, а сначала рекламу вырезать, края кадра обрезать, логотип канала замазать, от шумов почистить двумя «шумодавами», Deinterlace правильно сделать, цвета подкорректировать, ну и звук обработать. Что прикажете делать в такой ситуации? Ведь в Nero Recode всего два с половиной фильтра есть.

    В таком случае, раз Recode принимает avs-файлы, можно попробовать всю предварительную обработку видео возложить на плечи AVISynth’a и его плагинов. Но, как показывает практика, телевизионный сигнал (особенно с вырезанием рекламы) удобнее обрабатывать в VirtualDUB’e[О VirtualDUB’e и других полезных видеомонтажных утилитах вы можете почитать в моей статье «Арсенал видеофила» (www.computerra.ru/offline/2004/568/36747)]. Вот от этого и стоит отталкиваться. После удаления лишних фрагментов и составления цепочки фильтров надо сделать из VirtualDUB’а frameserver[Не забудьте, что в первую очередь надо зарегистрировать фрейм-сервер в системе. Делается это запуском файла AuxSetup.exe из директории VirtualDUB’a].

    Даже юный прогульщик уроков английского языка догадается, что для этого служит пункт меню Start Frame Server. Потребуется указать имя файла с расширением .vdr, после чего VirtualDUB перейдет в режим «фреймсервинга». Теперь при обращении какого-либо видеоприложения к созданному vdr-файлу оно будет в реальном времени получать видео, прошедшее через всю цепочку фильтров VirtualDUB’a. Небольшая проблема лишь в том, что приложений, знакомых с vdr-файлами, немного, и Nero Recode к ним, естественно, не относится. Поэтому, чтобы, наконец, заставить Recode работать аки московского таксиста в новогоднюю ночь, VirtualDUB’овский файл фрейм-сервера надо пропустить через AVISynth. Создать такой скрипт проще пареной репы:

    AVISource(”W:\Video\Capture\server.vdr”)[Есть и несколько менее надежный, но зато более простой путь — замаскировать vdr-файл под AVISynth’овский фрейм-сервер путем смены расширения (*.vdr -> *.avs).В большинстве случаев такой трюк должен пройти, хотя гарантировать его работоспособность при любых комбинациях версий VirtualDUB, AVISynth и Recode нельзя].

    Теперь можно кодировать кино с наложенными в VirtualDUB’e фильтрами. Кстати, учтите, что шумный телевизионный сигнал Ateme h.264 жмет не столь блестяще — разница с DivX гораздо скромнее.

    Таким не совсем очевидным способом можно приручить Nero Recode (а в общем случае — любую программу, воспринимающую видео через DirectShow) к работе с любыми файлами, которые может «поднять» AVISynth. А «поднять» он может практически любой файл, ибо соответствующих плагинов для него написано великое множество.

    Теперь время поговорить о компрессии звука. В принципе, звук тем или иным способом при помощи AVISynth можно «ввести» в Recode и закодировать одновременно с видео. Однако этот путь, на мой взгляд, не самый рациональный. И вот почему.

    Если при обработке видео мы вынуждены строить такие сложные многоэтажные здания из фрейм-серверов, чтобы обойти природную убогость Recode, то при работе со звуком это совершенно излишне. Оказывается, уже после окончания кодирования видео к mp4-файлу не составит труда подклеить звуковую дорожку. Для слияния всего media-хозяйства в один файл можно использовать замечательную немецкую утилиту mp4muxer(mp4muxer.movie2digital.de) — аналог avimux, только для контейнера mp4. Эта утилита позволит создать mp4-файл с несколькими звуковыми дорожками и субтитрами. Хоть Recode для кодирования звука и не предлагает ничего, кроме aac, в mp4-контейнере могут храниться еще mp3- или ogg-потоки. К большому сожалению, по структурным соображениям mp4-контейнер не поддерживает «родной» для DVD формат ac3, так что без перекодировки звука DVD все равно не обойтись. Таким образом, на выбор вам предоставляется любой из трех форматов — mp3, ogg, aac, — в которые вы можете закодировать звук от вашего видеоролика, при необходимости предварительно обработав его в любом звуковом редакторе.

    В чем плюсы такого подхода?

    Во-первых, вы не связаны с Recode и проблемами его «слуха». Подозрения на «глуховатость» Recode у меня возникли после того, как, пытаясь закодировать mono, она предпочла предварительно интерполировать его в стерео. Вот тут-то и случился конфуз. Откуда ни возьмись выплыли пренеприятные для уха артефакты, будто частота дискретизации уменьшилась вдвое. Таким образом, компетентность программы в вопросах кодирования звука попала под сомнение. Обратите внимание, что mp4muxer’у совершенно все равно, кем созданы файлы, которые он микширует, так что супротив Recode в вашем распоряжении — целый парк платных и бесплатных утилит для создания aac-файлов, многие из которых дадут Recode фору как по надежности, так и по количеству настроек, могущих положительно сказаться на качестве кодирования.

    Во-вторых, вы можете использовать любой звуковой формат, поддерживаемый контейнером. Это может быть полезно, опять же, при кодировании mono-звука.

    Кодировать видео с помощью такой несуразной утилиты, как Nero Recode, конечно, неудобно. Поэтому многие энтузиасты используют для этого бета-версию Ateme h.264, распространявшуюся несколько месяцев назад в консольном виде и оказавшуюся вполне стабильной. Это крохотная по объему утилита (550 Кбайт), все конфигурирование которой производится в текстовом режиме. В комплекте с ней, кстати, идет собственный mp4muxer, отличающийся от упомянутого мной неумением склеивать более двух аудиопотоков в один файл. К сожалению, дать ссылки на эти полезные утилитки я не могу, так как распространение их запрещено, но оставить здесь их названия едва ли предосудительно: encavc.exe, mp4muxer.exe.
    © ООО "Компьютерра-Онлайн", 1997-2024
    При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.