MediaCoder. Кодируем видео в формат H.264

18.10.2012, 03:30

Шрифт: A- A+

Редактировать статью

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

Проекту MediaCoder исполнилось уже несколько лет, и за эти годы программа обрела большую популярность – прежде всего благодаря своей «всеядности»: MediaCoder может без проблем работать с десятками видео- и аудио-форматов, включая MPEG2/4 (AVC), DivX/XviD (AVI), QuickTime MOV, RealMedia и Windows Media.

Наиболее часто у пользователей возникает необходимость конвертировать оригинальное видео в формат MPEG4 AVC (H.264), поддерживающийся современными мобильными платформами, либо уменьшить размер файлов, сохранив по возможности оригинальное качество.

 

Итак, у нас на руках имеется тестовое видео: трейлер «BF3 Armored Kil» с разрешением 1920x1080 и битрейтом 5 642 Килобит/сек. Поставим перед собой задачу перекодировать его в видеофайл с меньшим размером (битрейтом) и более низким разрешением 720p. Для кодирования видео-потока выберем энкодер x264, сочетающий высокие показатели качества изображения с низкими требованиями к размеру конечных файлов – другими словами, отличающийся замечательной эффективностью конвертации. Операционная система – Windows 7 SP1 64-bit.

 

Загрузка и инсталляция MediaCoder

Зайдите на сайт MediaCoderHQ.com, выберите раздел «Download», затем перейдите по ссылке «Choose a MediaCoder edition to download» на страницу, где вам предложат выбрать издание Mediacoder. Нас интересует, конечно же, полное издание «MediaCoder Full Edition» – наиболее функциональное из всех.

На момент составления руководства актуальной версией является 0.8.16.5292. Остается кликнуть на содержащую номер версии ссылку, размещенную под заголовком MediaCoder 64-bit (x64), и воспользоваться одним из зеркал для загрузки.

Если по каким-то причинам скачать MediaCoder с официального сайта не удается, рекомендую искать свежую версию программы на сайте VideoHelp.com в разделе «Tools».

При установке на этапе выбора компонентов («Choose Components»), которые будут проинсталлированы в систему, отметьте пункт «Extra Decoders» в  разделе «Video Components». После первого запуска появится окно с предложением воспользоваться «Мастером настройки» («Config Wizard»), однако целесообразнее производить все настройки для будущего кодирования непосредственно в главном окне самой программы, потому необходимо отметить пункт «Skip this screen on startup» и нажать «Start now».

По умолчанию программа сворачивается не на панель задач, а в системный трей. Чтобы отключить эту опцию в главном меню программы выберите File – Setting – Overall – User Interface – Disable tray icon/Enable tray icon (вместо Enable tray icon and minimize to tray) и перезапустите MediaCoder.

 

Добавление файлов и подготовка к кодированию

В главном окне MediaCoder крупное поле слева вверху отведено под список заданий (Jobs), то есть файлов, которые уже были перекодированы в нужный формат или же только дожидаются своей очереди. Добавить новый файл с этот список можно, перетащив его прямо из Проводника Windows или через диалоговое окно «Add». После добавления файла в поле «Properties» («Свойства») справа от списка MediaCoder отобразит данные о типе контейнера, битрейте, длительности, размере, а также подробную информацию о видео- и аудио-потоках. Над «Properties» вы увидите строку, показывающую путь к папке, в которой в результате перекодирования будет создан новый файл. По умолчанию используется папка, в которой находится оригинал (Original Folder), ее можно сменить, нажав кнопку с троеточием (Обзор) справа от поля.

Под списком задач расположено несколько вкладок с опциями кодирования, с помощью которых укажем программе все нужные нам свойства будущего файла. Выбираем вторую вкладку «Tasking». По умолчанию MediaCoder на время кодирования размещает все временные файлы в стандартной системной папке AppDataLocalTemp. Если в системном разделе мало свободного пространства, рекомендуется сменить папку на любую иную, расположенную в другом разделе (в некоторых случаях MediaCoder экпортирует видео- и аудио-потоки из оригинального файла в отдельные временные файлы). Сделать это можно через диалоговое окно, нажав кнопку «Browse» под полем «Working Folder».

По умолчанию MediaCoder устанавливает приоритет для процесса кодирования автоматически. Если отзывчивость системы на время кодирования снижается слишком сильно, можно вручную изменить приоритет до уровня Lower или Idle в выпадающем списке в поле «Priority». Кроме того, можно установить предпочтения для использования ядер процессора, указав один из модулей, принимающих непосредственное участие в процедуре кодирования: audio/video decoder либо audio/video encoder. Рекомендуется выбрать самый «прожорливый» модуль - video encoder (отвечающий за конвертацию оригинального видео-потока).

 

Определение базовых настроек

Теперь перейдем к вкладке «Picture» («Свойства кадра»). Сначала отметим поле Resize галочкой. Выбрать нужное разрешение можно из выпадающего списка справа от поля Resize либо ввести вручную. Чтобы изменить яркость, контраст или гамму изображения, а также степень насыщенности цветов, нужно нажать на кнопку «Effects» и в появившемся окне «Clipping and Effects» с помощью ползунков выставить желаемые значения для этих параметров. Если в оригинальном видео наблюдаются горизонтальные полоски («эффект расчески») в динамичных сценах, необходимо применить специальный фильтр, активировав пункт «Enabled» в поле «De-interlace».

В этом же окне можно задать исходное и конечное значение времени (в полях «In Time» и «Out Time» соответственно), если вы собираетесь кодировать только определенный интервал, а не весь клип. Оба значения можно указать вручную, но легче это сделать при помощи ползунка под рамкой, в которой проигрывается видео. Сначала выберите стартовую позицию и нажмите «Mark In», а затем  обозначьте финальную позицию, нажав «Mark Out». Далее – Ok для применения настроек. Задать начальную и финальную позиции времени для будущего видеофайла можно и в полях «Start Position»/«End Position» на вкладке «Time» вручную или кликнув на кнопку Select.

 

Важно! Иногда контрастность или насыщенность оригинального и конечного изображения совпадают не в полной мере. Чтобы сделать изображение более контрастным (как в оригинале), необходимо повысить значение "Contrast", а снизить излишнюю цветовую насыщенность можно, уменьшив слегка значение "Hue".

 

Чтобы выбрать нужный контейнер для видео, который объединит в одном файле аудио- и видео-потоки, откройте вкладку «Container» и выберите из выпадающего списка пункт «MP4» в поле «Container».

Параметры для видео-потока нужно задать на вкладке «Video»: сначала рядом с полем «Video bitrate» укажем необходимый нам битрейт – 3000 Kbps, далее выбираем видео-формат – H.264. Если у вас имеется современная видеокарта от nVidia, вы можете передать функцию конвертации видео графическому процессору – для этого отметьте пункт GPU справа от поля Encoder (в последнем название энкодера изменится на CUDA Encoder).

Параметры для аудио-потока задаются на вкладке «Audio». В качестве аудио-формата выберите LC-AAC (Low Complexity AAC), если ожидаемый конечный битрейт аудио-потока превышает 96 Kbit/s, или HE-AAC/HE-AAC v2 (High Efficiency AAC) – для более эффективной (с меньшими последствиями для качества) конвертации в аудио-поток с низким битрейтом. По умолчанию для кодирования в формат AAC используется Nero Encoder. На вкладке «Sound» в поле «Channels» («Аудио-каналы») выберите Original для сохранения оригинальной конфигурации каналов аудио-потока (как правило, стерео).

 

Параметры кодирования аудио- и видео-потоков

Справа от группы вкладок с основными опциями, включающие перечисленные выше Tasking, Video, Audio, Picture и т.д., расположена еще одна группа вкладок, с помощью которых производится тонкая настройка энкодеров. Если для аудио-потока вы выбрали AAC, то вам станет доступна вкладка "Nero Encoder", на которой в поле «Rate Mode» можно выбрать значение «Target Bitrate» (назовем это «оптимальным битрейтом» - в противоположность CBR/Constant bitrate – постоянному битрейту), а затем при помощи ползунка установить необходимый битрейт. Для фильмов и музыкальных клипов рекомендуется битрейт выше 192 Kbit/s.

Самый главный этап настроек касается выбора правильных параметров для кодирования видео-потока в формат H.264. Если выбран стандартный энкодер x264 (без участия GPU/CUDA), справа активируется вкладка «x264». Для достижения наилучшей совместимости с мобильными устройствами в поле «Profile» стоит указать «основной» профиль x264 – Main, и диапазон уровней («Levels») в пределах 3.0-4.2. Для современных и производительных устройств можно выбрать High Profile и Auto-level. Значение поля «Preset» изменим на Custom (Пользовательские настройки).

 

Motion Estimation

Здесь необходимо сделать небольшое отступление. Каждая из сцен, которые формируют видеоряд, состоит из определенного количества кадров (frames/pictures). Эта группа кадров (GoP, group of pictures), как правило, содержит в себе визуальную информацию о перемещении каких-либо объектов или других воспринимаемых нами изменениях (к примеру, яркости освещения). По умолчанию длина GoP равна значению в интервале от 25 до 250 кадров. При этом кадры в этой последовательности можно разделить на три группы: i-frames (intraframes, или reference frames, ключевые кадры) представляют собой кадры, которые полностью соответствуют определенным кадрам из оригинального видео-потока, а значит, занимают максимальный объем; p-frames (predictive frames) в GoP следуют за ключевыми кадрами или другими p-кадрами и содержат только данные, описывающие изменения по отношению к предыдущему кадру, таким образом «отнимая» намного меньше пространства; b-frames (bi-directional predictive frames) рассчитываются энкодером на основе данных как о предшествующих, так и стоящих впереди них кадрах. Компрессия, иными словами, сжатие, «уменьшение» размера видео-потока, видео осуществляется, с одной стороны, за счет квантизации и иных алгоритмов «упрощения» изображения, применяемых к ключевым кадрам, а с другой – за счет использования «легких» p/b-кадров, содержащих достаточно информации об изменениях от кадра к кадру для преобразования всей последовательности в динамичную сцену.

x264 активно задействует b-кадры с целью повышения эффективности кодирования, однако в большинстве случаев не стоит устанавливать значение «B-frames» выше 4-5 – за исключением анимационных материалов (мультипликации или anime).  Кроме того, x264 позволяет включить так называемый «адаптивный» режим, в котором энкодер самостоятельно определяет, нужно ли в каждом конкретном случае использовать указанный выше максимум (4-5 b-кадров) или же сократить это количество за счет применения p-кадров. В «оптимальном режиме» энкодер лучше справляется с этой задачей, слегка уменьшая размер конечного файла (если на вкладке «Video» вместо битрейта указано качество в процентах)/улучшая качество изображения – установите «Optimal» вместо «Disabled». Что касается «Reference frames», их количество стоит указывать в пределах 2-4 кадров. Чем выше это значение, тем меньше интервал между кадрами при поиске во время воспроизведения видео – но вместе с тем, ниже и эффективность кодирования.

Главный параметр, который, пожалуй, в наибольшей степени влияет на сохранение оригинального качества видео – это «оценка движения» в динамичных сценах («Motion Estimation»). Если вы хотите добиться максимально возможного эффекта, выбирайте пункты UMH (Uneven multi-hexagon) или Exhaustive. Впрочем, чем больше усилий энкодер прикладывает к «обсчету» движений, тем дольше длится процесс кодирования. Параметр «Range» указывает размеры области (блока) кадра в пикселях, в которой происходит «поиск» быстрых изменений – для Full HD-видео, конвертируемого в режимах UMH и выше, рекомендуется значение не менее 16. Параметр «Subpixel ME» определяет выбор алгоритма оптимизации при «оценке движения» на позиции каждого пикселя в блоке: начиная со значения 6, энкодер задействует разные варианты алгоритма RDO (Rate–distortion optimization) – от простого RDO для i/p-кадров (6) до «улучшенного» («Refined RDO») для всех типов кадров (9). Повышение значений «ME Range» и «Subpixel ME» заметно увеличивает время кодирования.

В меню «Advanced» («Продвинутые опции») можно оставить активными все опции, предназначенные для сохранения качества изображения при конвертации, включая психо-визуальные оптимизации, deblocking-фильтр, убирающий артефакты в виде «квадратов» (на которые как бы распадается изображение), а также CABAC (Context Adaptive Binary Arithmetic Coder), увеличивающий эффективность кодирования – правда, за счет все тех же системных ресурсов.

 

Запуск процесса кодирования

Теперь, когда все настройки энкодера и параметры будущего видео-файла определены, можно приступить к кодированию. Для этого в списке задач выделите оригинальный файл (отметив галочкой поле слева от его названия), и нажмите кнопку «Start» на панели инструментов под главным меню MediaCoder. Прогресс отображается при помощи растущих полосок «Current Task» («Текущее задание») и «Total Tasks» («Все задания»). На вкладке «Preview» («Предпросмотр») в режиме реального времени можно наблюдать за окном, в котором демонстрируются кодируемые в данный конкретный момент кадры.

Если вы поставили в очередь несколько файлов, они будут обрабатываться программой последовательно. Для включения параллельного кодирования нескольких файлов на вкладке «Tasking» выберите нужное число одновременно выполняемых задач в поле «Parallelize» (полезно для кодирования аудио-файлов).

После завершения кодирования можно открыть окно Проводника с папкой, содержащей новый файл, кликнув по кнопке «Open» вверху справа от поля «Output». Мы получили более «компактную» версию трейлера с разрешением 1280x720 и размером на 44% меньше по сравнению с оригиналом. Процесс кодирования занял около 5 мин. MediaCoder указал соотношение длительности файла ко времени кодирования – 0.54.

Сопоставление характеристик оригинального (слева) и нового (справа) видео-файла, созданного при помощи энкодера x264 

Если вам нужно произвести повторное кодирование файла (с другими параметрами), выделите его в списке, кликните на нем правой кнопкой мыши, и из контекстного меню выберите «Set item State» («Установить текущий статус для данного файла») – «Undone» («Статус: не завершено»). Статус в колонке «State» изменится на «Ready» («готов к кодированию»).

 

Кодирование с помощью технологии CUDA

Обладатели видеокарт от nVidia могут воспользоваться быстрым алгоритмом кодирования в формат H.264, использующим CUDA-архитектуру графического процессора. Отметив пункт «GPU» на вкладке «Video» справа от поля «Encoder», вы переключитесь на CUDA-энкодер. Затем на вкладке «CUDA» по соседству предстоит определить параметры для кодирования видео-потока: выбираем из списка «Preset» пункт «Custom» («Пользовательские опции»), далее - профиль «Main», уровень 4.2, 3 b-кадра (рекомендуемое значение для CUDA), а также активируем автоматический выбор длины групп кадров «Dynamic GoP» - в этом случае энкодер будет создавать ключевой кадр, открывающий собой последовательность GoP, не через жестко заданный интервал (некоторое точное количество кадров), а при необходимости, то есть при обнаружении начала новой динамичной сцены.

Следует заметить, что энкодер CUDA, несмотря на существенно более высокую скорость кодирования, не способен сохранить оригинальное высокое качество изображения – особенно, в случае с Full HD-контентом. Однако для кодирования видео для мобильных платформ CUDA можно отдать предпочтение, поскольку различие в качестве «картинки» будет уже не столь заметным. Средняя скорость (соотношение длительности к времени кодирования) кодирования трейлера в сравнении со стандартным энкодером возросла практически в 5 раз: 2.46x вместо 0.54x.

Сопоставление характеристик оригинального (слева) и нового (справа) видео-файла, созданного при помощи энкодера CUDA  

Помимо MediaCoder внимания также залсуживают бесплатные программы MeGUI и XviD4PSP 6.0 (доступна бета-версия).

Изображения к материалу:

Чтобы написать здесь комментарий необходимо

КОММЕНТАРИИ: 1 СВЕРНУТЬ

05.05.2015, 01:24
korsky
Ответить

Спасибо за замечательную статью! Только сегодня установил программу, стал искать материалы по работе с конвертером, Ваш материал самый доходчивый и грамотный. Тут же, руководствуясь прочитанным,  отконвертировал видеофайл 7 Гб без всяких проблем.


Хотелось бы побольше о работе с видео- и аудио- файлами, в частности, о "прикручивании" аудиодороги к фильму, синхронизации звука и изображения и т.д. и т.п. Заранее благодарен!





Система Orphus