X264 кодирование (настройка кодека, работа с megui)
Так уж повелось, что с приходом более ёмких носителей информации пришла и эра высокого разрешения, новомодного HD. Популярность торрентов открыла новый виток в погоне за сэкономленными компрессионными мегабайтами видео. Судя по статистике скачиваний, именно раздачи приставкой Rip, AVC - получают все большее народное признание, это и не мудрено, ведь возможность скачивать и сохранять десятки гигабайт в пересчете на один полуторачасовой фильм стала реальностью, но чрезвычайно расточительного свойства. На личном опыте, не перестаю удивляться как быстро возможно, в буквальном смысле проглотить, полутерабайтную связку RAID0 массива. Всему виной медиаконтент, пухнуший после перевода на рельсы "высокой четкости". В этом смысле, переход на новые алгоритмы сжатия видеопотока стал действительно назревающей проблемой. Не вдаваясь в исторический экскурс, отмечу, что в свое время с весомой долей скептицизма отнесся к появлению видеокодека h264, обусловленная очевидно сильной DivX привязанностью. Время как известно, не стоит на месте и вот уже просторы торрентов стали местами проглядывать полуторагигабайтными рипами весьма сносного качества. Как и полагается закоренелому консерватору, мне было чудовищно сложно отказаться от бытующих в моем сознании представлений компрессии видео, и сделать шаг по направлению к набирающему обороты h264. Свой негативный оттенок вносил контейнер mkv, в который, как правило, "запечатывался" видеоряд сжатый h264 и звуковая дорожка соответствующего качества. Популяризация матрешки, со скрипом, но все же подтолкнула меня к освоению последующей ревизии h264, а именно видеокодека x264. Многочисленные обзоры на просторах рунета, доносят довольно многообещающую информацию, характеризующую кодек x264/h264 как наиболее прогрессивное решение в области компрессии видеоинформации. Сравнительные тесты в режиме "покадровой развертки" демострируют впечатляющие результаты, игнорировать которые в настоящее время более не представляется возможным. Посему, забегая вперед отмечу, что знакомство оправдало мои ожидания и скорее всего будет иметь довольно длительную историю, при сопутствующем неизменном росте вычислительной мощности соврменных компьютеров. Итак приступим...Для работы нам потребуется следующее программное обеспечение:
MeGUI+AviSynth
MeGUI — GUI (графический пользовательский интерфейс) с открытым исходным кодом, ориентированный преимущественно на сжатие материала в формат ISO MPEG-4. Может также использоваться для создания скриптов AviSynth (AVS), объединения потоков мультимедиа и сжатия аудио.
Входные форматы: любые, для которых установлен VfW или DirectShow декодер (используется AviSynth), AVI, D2V, VOB/TS/MPG/PVA
Видеокодеки: x264, XviD, Libavcodec MPEG-4, Snow
Аудиокодеки: AAC (FAAC, Nero Digital, Winamp), MP2, MP3 (LAME и Aud-X), AC-3, Ogg Vorbis.
Поддерживаемые контейнеры: MP4, MKV, AVI. Доступно также сохранение в бесконтейнерном виде (raw stream).
AviSynth — средство для обработки, в частности линейного и нелинейного монтажа видеоматериалов. Работает как фрэймсервер, имеющий систему сценариев, редактирование которых позволяет осуществлять нелинейное редактирование любого уровня сложности с высоким уровнем воспроизводимости результатов.
Сперва инсталлируем AviSynth, затем распаковываем MEGui, который не требует привычной установки. При первом запуске megui предложит обновить компоненты самой себя с чем незамедлительно соглашаемся.
Обновляем...
После поочередного обновления всех предложенных и доступных в настоящий момент частей программы, переходим к созданию скрипта процесса кодирования. В качестве источника я выбрал видеофайл "Битва титанов" объемом 9,6 гигабайта. Ставилась задача: получить существенно меньший по размеру видеоконтент с хорошим соотношением разрешение/объем. Первым этапом процедуры пережатия является процесс создания скрипта/алгоритма последовательных действий.
Выбираем вкладку AVS Script Creator....
Подгружаем исходный видеоматериал
Как видно исходное видео высокого разрешения 1920 на 800 пикселей, aspect ratio или отношение сторон составляет 2,4, битрейт составляет 10772 Kbps; 23,976 fps; 0,293 bpp. Последняя величина есть ничто иное как плотность бит на пиксель, т.е (10772 Kbps)/(1920x800x23,976 fps)=0,293 bpp. Плотность информации на пиксель величина наиболее полно отражающая качество, исходя из понятий битрейта, разрешения картинки и плотности понимаем, что для получения меньшего размера при сохранении хорошего качества видеоматериала нам необходимо соразмерно уменьшить разрешение и битрейт при близкой к 0,2-0,3 плотности бит на пиксель. Приведу цитату википедии..
"Самый оптимальный вариант - вычислить значение по формуле: ширина_кадра*высота_кадра*кадров_в_секунду*0,15/1024. Где 0,15 - количество бит на пиксель (можете варьировать это число в пределах от 0,05 до 0,2 по своему усмотрению). Если же вам надо получить определенный размер конечного файла, то воспользуйтесь встроенным калькулятором (Tools\Bitrate calculator)"
Опустившись, до стандартного по горизонтали разрешения (DVD-Video, 720p) и сохраняя коэффициент плотности информации на пиксель 0,3, получим битрейт по видео равный - 1539Kb/s, а с учетом длительности фильма приблизительный размер видеодорожки составит 1,1-1,2Gb. Жмем SAVE...
В разделе настроек кодера устанавливаем x264 *scratchpad*, жмем config, для установки параметров...Для достижения максимального качества выбираем трёх!проходное кодирование, и пресет PLACEBO - который является наиболее ресурсоёмким, битрейт задаем 1500Kb/s.
Остается добавить задания в очередь нажав Enqueue....
Перейдя на вкладку Queue видим поставленные в очередь 3 прохода сжатия видеоконтента. Статус каждого из проходов можем перевести в отложенный (postponed) выбирая таким образом подходящий момент для продолжения процедуры либо приостанавливая её. Остается нажать Start...
Сразу после старта процесса кодинга наблюдаем довольно красноречивые промежуточные результаты, а именно: скорость пережатия на...
составляет немногим более 2,5 кадров в секунду, время требуемое на один проход предварительно оценивается в 15 часов 45 минут, загрузка обоих ядер процессора стабильно очень близка к максимальной. А вот собственно говоря и результат...
В заключение, для более наглядной убедительности вышеизложенного, я хотел бы привести сравнительную раскадровку видеоряда сжатого x264 и DivX...
Артефакты кодирования наиболее явно проявляют себя в динамичных сценах при сжатии с малым битрейтом. Таким образом, новый алгоритм сжатия, заложенный в прогрессивном детище x264, уверенно опережает конкурентов, позволяя визуально оценить разницу в качестве полученного видеоматериала. Единственным минусом видеокодека x264, является его чрезвычайная ресурсоемкость на этапе сжатия видеоконтента.
p.s: В настоящей статье я затронул исключительно процесс сжатия видеоматериала кодеком x264, таким образом, на выходе, мы получаем беззвучный видеофайл, вложенный в контейнер mp4. Логичным продолжением произведенной работы служит пережатие многоканальной аудиодорожки ac3 в ogg, с последующим муксом (сведением воедино) mp4-видео и ogg-многоканальной аудио дорожки в mkv контейнер....Так что продолжение следует...
Маслёнков Андрей (8 сентября 2010г.)
|