ТЕХНОЛОГИИ: h264 Год спустя Технология: Кодирования видео в MPEG-4 AVC. Часть первая
ТЕХНОЛОГИИ: h264 Год спустя Технология: Кодирования видео в MPEG-4 AVC. Часть первая
Автор: Филипп Казаков
Чуть больше года назад на страницах «Компьютерры» я делился опытом работы с новаторским на тот момент видеокомпрессором Ateme h264, реализованном в программе-кодировщике Ahead Nero Recode. Тогда Recode был чуть ли не единственным продуктом, позволявшим кодировать видео в h264, а потому приходилось мириться с традиционными свойствами монопольного коммерческого софта.
Собственно, только кодеком нового поколения Nero Recode и мог похвастаться, а в других отношениях программа была просто ужасна. Вообще-то говорить о ней в прошедшем времени не совсем корректно, — проект еще до сих пор развивается и продается, — но сегодня, к счастью, у него есть сильный конкурент, который позволит всем желающим отправить дистрибутив Recode на кладбище жесткого диска. Конкурент этот многолик, как Нерей, и имя ему — Open Source.
Напомню вкратце, о чем идет речь. Формат компрессии видео MPEG-4, стандартизированный в 1998 году, подразделяется на два основных профайла — MPEG-4 ASP (Advanced Simple Profile), к которому относятся DivХ, XviD и иже с ними, и MPEG-4 AVC (Advanced Video Coding, он же h264 или MPEG-4 Part 10). Первый получил феноменальную популярность благодаря полухакерской тусовке, взломавшей кодек Microsoft и выпустившей его легендарную модификацию DivX 3.11. С тех пор утекло много воды: «разработчики» DivХ 3.11 организовали собственную фирму DivX Networks, полностью переписали код компрессора и коммерциализировали свой продукт. Появилось и множество конкурентов, самым заметным из которых стал открытый XviD. Однако через какое-то время все возможности MPEG-4 ASP были исчерпаны, кодеки вылизаны почти до блеска, и кривая развития компрессоров устремилась к горизонтальной асимптоте [Попробуйте, например, ради интереса закодировать пару роликов 6-й и 5-й версиями DivХ, и вы обнаружите, что разница между этими версиями несравненно меньше, чем между 5-й и 3-й]. В этот момент на сцену вышел следующий профайл — MPEG-4 AVC, более требовательный к ресурсам кодирующих и воспроизводящих систем, зато позволяющий использовать более совершенные приемы компрессии и обеспечивший скачкообразное улучшение параметра качество/битрейт. Скачок этот можно сравнить с переходом от VCD к DVD (от MPEG-1 к MPEG-2), и хотя MPEG-4 ASP все еще гораздо популярнее AVC, явление это временное: h264 заявлен как производственный стандарт будущих HD/Blue-ray-дисков и уже используется для спутникового телевещания в Европе. Сегодня существуют стационарные плейеры, поддерживающие этот формат, а через несколько лет h264-плейеры станут столь же привычными, как DVD сегодня.
Вернемся к конкуренту Nero Recode. Он представляет собой сборник множества бесплатных commandline-энкодеров, микшеров, GUI и декодеров, увязав которые воедино, можно собрать нечто позволяющее закодировать в MPEG-4 AVC все, что душе угодно. Получается некий узел программ в Unix-стиле, вроде известнейшего пакета Gordian Knot, использовавшегося для кодирования MPEG-4 ASP. Единого названия у этого «кооператива» нет, как нет и законченного программного продукта. Нет точного перечня утилит, его составляющих, а также стабильного хостинга и красивого сайта для них. Нет и сложившейся команды разработчиков. Словом — классический «зоопарк» OpenSource-сообщества, со свойственной ему чехардой в версиях сборок компонентов, совместимостью, хостингами и документацией, полным отсутствием заботы об удобстве пользователя и отказом от любых гарантий.
Зато — к острию новой технологии можно прикоснуться уже сейчас, причем бесплатно, был бы доступ в Интернет.
Дополнительные фреймсерверы
В некоторых случаях, прежде чем подавать видео на вход AviSynth’a, имеет смысл прогнать его через еще один фреймсервер. В основном такой подход используется при декодировании DVD-видео и сжатии захватов с TV. DVD обычно имеют сравнительно сложную внутреннюю структуру и требуют отдельной утилиты для предварительной подготовки видеоконтента и приведения его в удобоваримый для AviSynth’a вид. DGIndex — наследник легендарного DVD2AVI — индексирует VOB-файлы, скопированные на жесткий диск из директории VIDEO_TS исходного DVD, и создает индексный d2v-файл. DGIndex.exe вы найдете в папке с MeGUI — программа должна была его скачать, как и ависинтовский плагин DGDecode.dll.
Сначала определите, в каких файлах скопированного вами DVD находится сам фильм, открывая VOB’ы в проигрывателе (например, в скачанном Classic Media Player’e). Имена всех файлов с фильмом скорее всего будут отличаться только порядковыми номерами; соблюдая очередность, загрузите VOB’ы в DGIndex. Проверьте пункт Audio->Output Method->Demux All Tracks, отвечающий за сохранение всех оригинальных аудиодорожек без перекодировки. Теперь выберите File->Save Project и сохраните d2v-файл, который затем можно будет открыть в AviSynth Script Creator’e. Сохраняя готовый AVISynth-скрипт, оставьте то же имя файла и путь, что были у d2v-проекта, — это позволит делать предпросмотр avs-скрипта вместе со звуком.
При сжатии захватов с TV и решении схожих задач, требующих маломальского монтажа (вырезания рекламы, например), интерфейс (вернее отсутствие оного) нивелирует все остальные преимущества AviSynth’a над старым добрым VirtualDUB’ом. Нет проблем — обработайте видео в привычном VirtualDUB’e, сохраните аудиоряд в wav-файл, а затем переведите VirtualDUB в режим фреймсерверa (File -> Start Frame Server). В результате будет создан vdr-файл, который опять же «съест» AviSynth Script Creator.
Тактический инструктаж
Сегодня речь пойдет о том, как научиться работать со всем этим безобразием, а именно кодировать видео в MPEG-4 AVC с использованием только бесплатного софта. Существует множество способов сделать это, я расскажу о том, который использую сам, то есть, разумеется, об оптимальном. Он базируется на использовании открытого видеокодера x264, бесплатного аудиокодера Nero AAC и графической оболочки MeGUI. Поскольку способ этот довольно запутанный, начертим общий план действий (см. блок-схему).
C приходом h264 мировая общественность фактически отказалась от традиционного, но устаревшего контейнера AVI в пользу родного для всех четвертых MPEG’ов MP4. Нет, h264-поток, конечно, можно впихнуть и в «авишку», для чего достаточно скачать и установить acm-версию кодека x264, а затем воспользоваться любым видеоредактором, но при этом вы лишитесь множества «вкусностей» формата. К ним относятся некоторые «фичи» энкодера, повышающие качество итогового материала, а также надежная поддержка нескольких медиапотоков, субтитров, меню и глав. Кроме того, h264 avi-файл не будет читаться на аппаратных проигрывателях, в отличие от стандартизированного [ISO/IEC 14496-14, ISO/IEC 14496-12] MP4. Вместе с контейнером на свалку истории отправился и VfW-интерфейс, и все утилиты для работы с ним (и даже старый добрый VirtualDUB). Исторический процесс повернулся на 180 градусов и от сложного непрозрачного системного интерфейса Video for Windows вернулся к простому: для кодирования используется CLI-кодек (Command Line Interface, интерфейс командной строки) x264.exe. На вход x264.exe подается некоторый видеопоток, а на выходе получается mp4-видеофайл. Настройка параметров компрессии производится с помощью ключей командной строки. x264.exe может принять на вход либо специальный AVI-файл, либо AVISynth’овский [AVISynth — своеобразный язык программирования, предназначенный для обработки видео. Использует текстовые avs-скрипты в качестве инструкций по обработке видеопотока. Широко использует DirectShow-интерфейс Windows, поддерживает расширения через дополнительные плагины] скрипт-фреймсервер, занимающийся предварительной подготовкой вашего видео. Мы будем использовать только AVS-скрипты.
Для кодирования звука (который, естественно, жмется отдельно и независимо от видео) на текущий момент оптимален CLI-кодек от Ahead [Да-да, именно фирма Ahead — создатель коммерческого Nero Recode — недавно выпустила лучший бесплатный MPEG4-кодировщик аудио! А произошло это чудо вот как: в начале нынешнего года Nero Recode начала сдавать позиции в плане кодирования видео. Но аудиокодер Nero оставался вне конкуренции. Пытливые умы и тут насолили Ahead: оказалось, что для кодирования звука достаточно выцарапать из дистрибутива Nero Recode 6 или 7 пару-тройку файликов, после чего с помощью специальных GUI ими можно было успешно пользоваться, даже не слишком нарушая лицензионное соглашение. Файлики эти быстро расползлись по Сети, и прогрессивная общественность окончательно отвернулась от Nero Recode. Ahead, поняв, что стремительно теряет популярность в среде видеокодеров, решилась на отчаянный шаг и 1 мая сего года выпустила удобный бесплатный CLI-кодировщик, ни в чем не уступающий своему удачнейшему аналогу из последней версии Recode] — neroAacEnc.exe, пережимающий входной поток в mp4-аудиофайл. Пару mp4-файлов с видео и звуком, полученных после кодирования, хотелось бы как-то соединить. Для этого предназначена еще одна CLI-утилита — mp4box.exe, микширующая все медиапотоки в один файл. Естественно, вручную писать команды для управления всеми этими утилитами невозможно, ведь для каждой из них существуют многие десятки ключей! Поэтому правит бал единая графическая оболочка MeGUI, автоматизирующая и визуализирующая весь процесс подготовки видео, настройки кодеков и микшеров и т. д. Вообще говоря, MeGUI, кроме кодирования x264, поддерживает еще больше десятка других свободных CLI-компрессоров и микшеров и, по замыслу разработчиков, должна кодировать все, что угодно, во все остальное. Но из-за громадья планов программа постоянно сырая, и на момент написания статьи многие ее возможности были реализованы посредственно. Со временем она, конечно, должна «просохнуть», а в сегодняшней практической части некоторые действия будут выполняться с помощью альтернативного софта.
Подготовка боезапаса
Ну что, вас не испугало теоретическое описание процесса? Fortes fortuna adjuvat — смелым помогает судьба, так что приступим к практической части. Разумеется, в одной статье невозможно описать и десятой части возможностей MeGUI, поэтому сегодня займемся только созданием видеофайла с h264-видеопотоком и AAC-звуком.
Нам потребуются:
• Декриптор DVD, если вы собираетесь пережимать DVD. Подойдет, например, DVDDecryptor. Полагаю, читатель сможет самостоятельно скопировать DVD на жесткий диск, тем более что этот процесс только в «Компьютерре» уже описывался несколько раз.
• AVISynth.
• Microsoft Framework 2.0.
• MeGUI.
• foobar 2000 и плагины для него: in_dts, in_ac3.
• Media Player Classic.
• Wabc bitrate calculator.
Для начала установите те из перечисленных приложений, которые требуют инсталляции в систему. Затем (внимание!) разархивируйте архив с MeGUI в ту папку, в которой вы собираетесь оставить ее навсегда. Подключитесь к Интернету и запустите MeGUI. Откажитесь от автоапдейта и сразу, ничего не трогая, отправляйтесь в раздел Tools->Update и обновите следующие компоненты:
• External programs:
x264
mp4box
neroaacenc
dgindex
avswrapper
• Megui:
data
• AviSynth plugins:
dgdecode
decomb
• Profile Collections:
STx264
Это необходимый минимум утилит для создания AVC-фильмов, в дальнейшем для расширения функциональности MeGUI вы всегда сможете установить остальные компоненты. Если автоматизированное обновление пройдет успешно — возрадуйтесь, вам повезло — все хостинги в данный момент работают стабильно, и целая толпа мелких файликов послушно собралась в рабочей папке MeGUI и ждет дальнейших распоряжений. Представляете, каково было бы разыскивать их в Сети по одному! Если же что-то не скачается — что ж, придется организовать розыск в Яндексе и Google. Делая автоматизированное обновление из MeGUI, вы убиваете и еще одного зайца — пути ко всем утилитам автоматически прописываются в настройках программы. Именно поэтому не стоит перемещать MeGUI в другую папку после апдейта. Иначе придется вручную переписывать пути в разделе Tools->Settings->Program Paths.
Инструменты подготовлены, идем дальше.
Подготовка контингента
Прежде чем приступать к кодированию, убедитесь, что все предварительные мероприятия выполнены: видео скопировано на жесткий диск, звуковая дорожка сохранена в отдельном файле. Самый сложный этап работы с MeGUI состоит вовсе не в кодировании, а в переводе видео в подходящий для энкодера х264.exe вид — а именно в создании avs-файла-скрипта для AviSynth’a. Большим подспорьем в этом непростом деле служит встроенный в инструментарий MeGUI AviSynth Script Creator. С его помощью можно полуавтоматически создать скрипты для простой перекодировки основных типов входного видео. AviSynth Script Creator теоретически должен открывать любые файлы, декодируемые через Direct Show, то есть проигрывающиеся в Windows Media Player или GraphEdit, а также индексные файлы d2v и файлы фреймсервера VirtualDUB’a. Откройте MeGUI, отправляйтесь в Tools -> AviSynth Script Creator и укажите путь к подготовленному исходному файлу. На экране появится окно с вашим видео, в котором… На этом интригующем моменте давайте прервемся до следующего номера «Компьютерры».
Продолжение следует.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
§ 14. Автора! Часть первая, теоретическая
§ 14. Автора! Часть первая, теоретическая 29 октября 1998Поговорим об авторских правах. Тема настолько же интересная, насколько большинству о ней ничего не известно.По вопросам авторского права написаны статьи и диссертации, существуют многостраничные законы и
§ 46. Заставки на сайтах. Часть первая
§ 46. Заставки на сайтах. Часть первая Каждый день она входила и каждый день молилась о том, чтобы это ежедневное свидание сошло благополучно. Л. Н. Толстой. Война и мир 7 февраля 2000Существуют страницы-заставки, выполняющие роль входной двери. На некоторых сайтах можно
§ 106. Кодирование. Часть первая
§ 106. Кодирование. Часть первая 21 июня 2004Кодирование — один из самых эффективных инструментов дизайнера. Под кодированием мы понимаем придание объекту или сущности дополнительных различаемых свойств. В качестве кодов могут выступать символы, формы, расположение, цвета,
Часть первая Язык программирования Pascal
Часть первая Язык программирования Pascal 1. Структура программы на языке Pascal В программе на Pascal выделяют следующие основные разделы: заголовок программы, описания, операторы. Разделы отделяются друг от друга точкой с запятой. В конце программы ставится точка. Каждый
ЧАСТЬ ПЕРВАЯ Концепции
ЧАСТЬ ПЕРВАЯ Концепции Сэр Исаак Ньютон по секрету признавался друзьям, что он знает, как гравитация ведет себя, но не знает, почему. Лили Томлин (Lily Tomlin) В поисках признаков разумной жизни во Вселенной (The Search for Signs of Intelligent Life in the
Часть II. Первая помощь
Часть II. Первая помощь У вас возникли затруднения, — вы не знаете, как приступить к игре или головоломке. Я не хочу предлагать вам готовое решение, иначе в чем будет удовольствие? Но, вероятно, нижеследующие указания наведут вас на правильный путь. Если бы я мог
Голубятня № 207 Тактильная сага. Часть Первая
Голубятня № 207 Тактильная сага. Часть Первая «Как же это, как же так? Я была одна, А теперь во мне живет ОН или ОНА…» Песня Тересы («Звезда и смерть Хоакина Мурьеты») Вот и случилось… Не было у дядьки печали, так черти накачали! Как и планировал – поселил в своем доме HP iPaq
Часть Первая
Часть Первая «Как же это, как же так? Я была одна, А теперь во мне живет ОН или ОНА...» Песня Тересы («Звезда и смерть Хоакина Мурьеты») Вот и случилось… Не было у дядьки печали, так черти накачали! Как и планировал – поселил в своем доме HP iPaq hx4700, но чтобы это сожительство
ГОЛУБЯТНЯ: Софт для мозгов. Часть первая
ГОЛУБЯТНЯ: Софт для мозгов. Часть первая Автор: Сергей ГолубицкийВ марте 1999 года вышла «Голубятня» №2, посвященная программе The Brain — одной из ранних потуг софтостроителей, целью которой была формализация мыслительного процесса. Помнится, тогда я ухватился за эту
ГОЛУБЯТНЯ: Люминиевая рапсодия. Часть первая
ГОЛУБЯТНЯ: Люминиевая рапсодия. Часть первая Давненько мы про железяки не гутарили! А тут их столько навалило, что грех утаивать. Короче говоря, нет у меня теперь ни mp3-плейера Mpio («Эмпио Мио»), ни ноутбука Toshiba M30x-118! О том, как докатился до жизни такой, - сегодняшний
ЧАСТЬ ПЕРВАЯ. ВВОДНАЯ
ЧАСТЬ ПЕРВАЯ. ВВОДНАЯ Глава 1. Хакер: кто он? "Ежели один человек чего построил, то другой завсегда разломать сможет... " Известный кузнец из известного фильма В настоящее время издается большое количество компьютерной литературы, в которой авторы так или иначе касаются
ТЕХНОЛОГИИ: h264. Год спустя: Технология кодирования видео в MPEG-4 AVC. Часть вторая
ТЕХНОЛОГИИ: h264. Год спустя: Технология кодирования видео в MPEG-4 AVC. Часть вторая Автор: Филипп КазаковНадеюсь, в конце прошлого номера я вас достаточно заинтриговал. Итак, вы открыли исходный файл с видео в AviSynth Script Creator’e и — ничего нового там еще не появилось, так что можете
Leadtek WinFast PxVC1100 — ускоритель кодирования видео Игорь Осколков
Leadtek WinFast PxVC1100 — ускоритель кодирования видео Игорь Осколков Сердцем Leadtek WinFast PxVC1100 является чип Toshiba SpursEngine SE1000. Что это такое и с чем его едят?! Вообще-то, это не просто чип или процессор, а скорее SoC. SpursEngine базируется на архитектуре Cell Broadband Engine (или просто Cell), разработкой
ГОЛУБЯТНЯ: Бум грувить! Часть первая
ГОЛУБЯТНЯ: Бум грувить! Часть первая Загадочное английское слово groovy не давало покоя с детства. В жизнь мою оно пришло из музыки: «Life, I love you, all is groovy!» – нудили Сёма с Гарфункелем[Simon And Garfunkel – The 59th Street Bridge Song (Feelin’ Groovy)]. «Wouldn’t you agree, baby you and me, we’ve got a groovy kind of love», – стонал