Кодирование видео кодеком x264 с помощью MeGUI

Первоначальные настройки
Создание d2v-проекта, вырезание звука
Создание AviSynth-скрипта
Обработка звуковых дорожек
Определение битрейта видеопотока
Настройка кодера x264

В соответствии со стандартом Mpeg4, видео должно быть закодировано AVC-кодеком, звук - AAC. Все это должно находится в контейнере mp4. Однако все Windows-программы, широко применяемые для кодирования видео, в частности, Virtual Dub и Gordian Knot, не поддерживают работу с этим контейнером. Поэтому, чтобы получить видеофайл, полностью соответствующий стандарту, придется немного поизвращаться.


Для работы нам потребуется следующая куча программ:

  • DVD Decrypter - для копирования DVD на жесткий диск.
  • Nero 6.6 или новее. Требуется для просмотра зажатых фильмов, т.к. содержит AVC-декодер для контейнера mp4. Также потребуется для кодирования аудио в формат AAC.
  • Кодер x264 CLI. Это кодер x264, представляющий собой .exe-файл, и имеющий интерфейс командной строки. Обработанный видеопоток он помещает в контейнер mp4 - то, что нам и надо.
  • MeGUI - графическая оболочка для этого кодера. Вы же не хотите вводить все необходимые параметры вручную в командной строке ;). Для работы программы требуется .NET Framework 2.0.
  • DGMPGDec - для создания d2v-проекта, а также для вытягивания звука из VOB-файлов. Также имеет название DGIndex.
  • AviSynth 2.55 или новее - для создания фрэймсервера.
  • BeSweet - для кодирования аудио. Также для кодирования звука в формат AAC Вам потребуются две библиотеки Aac.dll и aacenc32.dll из установленной Nero 6. Они находятся в папке Program Files -> Common Files -> Ahead -> AudioPlugins. Их нужно скопировать в папку, где находится BeSweet.

    Если же Вы используете Nero 7, то помимо перечисленных файлов Вам понадобится bse_Nero7WA.dll из Dimzon plugins, а также mfc71.dll. Он находится: Program Files -> Common Files -> Ahead -> Lib.

  • MP4Box - для микширования видео, аудио и субтитров в один mp4 файл.
  • Yamb - графический интерфейс для программы MP4Box.


Также, т.к. программа MeGUI существует пока в бета версии, рекомендуется на некоторых этапах пользоваться пакетом Gordian Knot. Установка Gordian Knot избавит Вас от необходимости скачивать и устанавливать DVD Decrypter, DGMPGDec (DGIndex), AviSynth и BeSweet, т.к. эти программы уже входят в Gordian Knot Rip Pack.


Порядок работы

  1. Копируем DVD на жесткий диск при помощи DVD Decrypter.
  2. Как это сделать, смотри на соответствующей странице сайта.


  3. Запускаем MeGUI:

  4. Основное окно MeGUI


    • При первом запуске программы заходим в меню Tools -> Settings:
    • Main Settings
    • В разделе DGIndex указываем аудиотреки, которые мы собираемся кодировать. Эти установки будут использоваться по умолчанию для всех фильмов, если указанные треки будут в них обнаружены. Включение галочки Auto Force Film at 95 Percent настраивает параметр алгоритма DGIndex для определения необходимости IVTC. Актуально для DVD в формате NTSC.
    • В разделе Other устанавливаем приоритет по умолчанию в Normal, а в качестве кодера x264 выбираем x264.exe.
    • Включение опции Open Preview after AviSynth script selection приводит к появлению окна предпросмотра при открытии в программе avs-скрипта. Предпросмотр позволяет, во-первых, удостовериться в работоспособности скрипта, а во-вторых, указать начало финальных титров (для кодирования их с меньшим битрейтом).
    • Включение опции Delete Output of aborted jobs приводит к автоматическому удалению выходных файлов при отмене процесса кодирования.
    • Опция Automatically set number of Threads автоматически устанавливает количество потоков кодирования в зависимости от количества процессоров. Актуально для многопроцессорных систем.
    • Опция Use Advanced ToolTips включает контекстные подсказки.
    • Включение опции Shutdown after encoding приведет к автоматическому выключению компьютера по завершении кодирования всех задач из job-листа.
    • Включение опции Autostart Queue приведет к автоматическому запуску процесса кодирования при помещении задания в job-лист.
    • Включение опции Delete completed Jobs будет приводить к автоматическому удалению выполненных заданий из job-листа.
    • Опция Delete intermediate files автоматически удаляет промежуточные (временные) файлы.
    • Включение опции Open Progress Window будет приводить к появлению при запуске задания окна подробной статистики о ходе кодирования.
    • В разделе Automated Encoding устанавливаем Number of passes = 2, т.к. для качественного кодирования видео двух проходов вполне достаточно. Две другие опции в этом разделе имеют отношение к 3-х проходнему кодированию, поэтому они нас абсолютно не интересуют.
    • На закладке Program Paths указываем, где располагаются требуемые программы: BeSweet, mp4Box, x264.exe, DGIndex, neroraw.exe (для кодирования аудио кодеком Nero AAC), и папка с плагинами AviSynth. Программa mencoder нужна лишь тогда, если Вы собираетесь использовать другие кодеки, отличные от x264. Программа mkvmerge нужна для микширования аудио и видео в контейнер mkv. Xvid_encraw.exe, faac.exe, lame.exe нужны соответственно для кодирования видео кодеком XviD, и аудио кодеками FAAC и Lame Mp3. Поэтому без них можно и обойтись.
    • Примечание. Для того, чтобы MeGUI мог открывать d2v-файлы, необходимо скопировать библиотеку DGDecode.dll из папки DGIndex в папку плагинов AviSynth. Иначе он будет выдавать ошибку типа "Нет такой функции Mpeg2Source".


  5. Создание d2v-проекта, вырезание звука.
  6. Запускаем DGIndex Project Creator (Tools -> D2V Creator):
    d2v Project Creator
    • В разделе Video Input указываем первый VOB файл из скопированных с DVD при помощи DVD Decrypter.
    • В разделе Audio выбираем опцию Select Audio Streams to demux, и указываем те треки (или один трек), которые нас интересуют. Если Вы все правильно сделали при настройке программы во время первого запуска, нужные треки будут выбраны автоматически.
    • Нажимаем кнопку Queue, занося задание в job-лист. При включенной опции On completion load files полученный в результате работы программы DGIndex d2v-файл автоматически откроется в AviSynth Script Creator-е. Включение опции "and close" будет приводить к автоматическому закрытию окна DGIndex Project Creator-а после нажатия кнопки Queue. В противном случае после помещения задания в job-лист Вам придется вручную закрыть это окно.
    • Для запуска процесса обработки перейдите на закладку Queue в основном окне MeGUI и нажмите кнопку Start. В результате будет создан файл с расширением .d2v, а также аудио файлы в формате ac3, содержащие выбранные нами звуковые дорожки.
    • По желанию, для создания d2v-проекта Вы можете воспользоваться непосредственно DGIndex, запустив его вручную, без использования MeGUI. Как пользоваться программой DGIndex см. здесь.


  7. Создание AviSynth-скрипта.
  8. Если Вы в DGIndex Project Creator-е включили опцию On completion load files, то по окончании работы программы DGIndex автоматически запустится AviSynth Script generator, в котором откроется созданный d2v-файл. В противном случае Вам придется запустить его вручную (Tools -> AviSynth Script Creator), и в строке Video Input указать местоположение d2v-проекта.
    При этом также откроется окно предпросмотра. До конца работы с AviSynth Script generator-ом не закрывайте его.


    AviSynth Script CreatorОкно Preview

    • Первым делом совершаем cropping - обрезку черных полос по контуру изображения (если они есть). Для этого нажимаем кнопку Auto Crop. Если в автоматическом режиме определение необходимой обрезки произошло неточно, корректируем значения вручную.
      Resolution Crop


      Тут же, определившись с обрезкой, выставляем желаемое разрешение выходного видео.

      Общее правило: разрешение выходного видео не должно быть больше, чем у исходного. Если Ваш исходный DVD не имел черных полос по бокам, можно оставить размер картинки по ширине равной 720. В большинстве же случаев оптимальным значением будет 704.

      В случае, отображенном на скриншотах, пришлось очень много обрезать по бокам, в результате чего размер исходного видео по ширине стал 720-18-8=694. Поэтому для выходного видео принят размер 688 (ближайший меньший размер, кратный 16).

      Теперь о размере по вертикали.

      Рекомендуемое значение размера кадра по вертикали посчитается автоматически при включении опции Suggest Resolution. Подсчитываться оно будет, исходя из значения Input DAR (соотношение сторон исходного видео). Для DVD стандартными являются соотношения 4:3 и 16:9.

      Нажав кнопку Preview, можно в окне предпросмотра посмотреть на результат проведенных махинаций. Однако пока алгоритм отображения работает некорректно, поэтому проверять настройки разрешения лучше в каком-нибудь внешнем плеере (напр. Media Player Classic) после сохранения готового скрипта.

      Окно Preview
    • Определяем необходимость проведения деинтерлейса. Для этого в разделе Deinterlacing жмем кнопку Analyse. В случае, если перекодируемое видео является анимацией (мультфильм), включаем опцию Source is Anime.
      Deinterlacing
      Если по окончании анализа будет определено, что исходное видео имеет прогрессивную структуру, то деинтерлейс не требуется. В противном случае выберите желаемый алгоритм деинтерлейса.
    • Устанавливаем алгоритм, по которому будет производиться ресайз - изменение разрешения. В подавляющем числе случаев оптимальным алгоритмом будет Lanczos. Он и стоит по умолчанию.
      Если исходное видео зашумлено, имеет смысл включить шимоподавляющий фильтр. Он размоет картинку, немного понизив четкость, но увеличивая сжимаемость видео.
      Filters
      Фильтр Heavy Noise не рекомендуется использовать, т.к. в результате его работы картинка слишком сильно деградирует.
    • По окончании всех настроек жмем кнопку Save и сохраняем готовый AviSynth-скрипт. Теперь его желательно открыть в каком-нибудь плеере, и проверить, удовлетворяют ли Вас выполненные настройки скрипта. Возможно, нужно усилить действие шумодава, или где-то видны черные полосы...


  9. Обработка звуковых дорожек.
  10. Для кодирования звука в формат AAC, являющийся стандартным звуковым форматом Mpeg4, рекомендуется воспользоваться программой BeSweet. Т.к. программа BeSweet имеет интерфейс командной строки, и поэтому пользоваться ей не очень удобно, существует ряд графических интерфейсов для нее, облегчающих задание параметров кодирования. Одним из примеров может служить графическая оболочка BeLight, пользование которой рассмотрено на соответствующей странице сайта.


    Программа MeGUI также позволяет задавать параметры кодирования для BeSweet:

    • Открываем созданный при помощи DGIndex ac3-файл, для чего в основном окне MeGUI в разделе Audio в строке Audio Input нажимаем кнопку "..."

    • Open audio
    • По желанию указываем имя выходного файла. Если этого не сделать, выходной файл получит то же имя, что и исходный, за исключением расширения, которое сменится на mp4.
    • Codec выбираем NAAC (Nero AAC).
    • В разделе Audio нажимаем кнопку Config:
    • Nero AAC options
    • MeGUI позволяет кодировать звук кодеком Nero AAC, используя две различные методики: с помощью встроенных возможностей AviSynth, либо с помощью BeSweet. Тут будет рассмотрен второй случай (в разделе Audio Options выбираем Encode via BeSweet).
    • Если исходный аудиопоток многоканальный (5.1), как в большинстве случаев и бывает, включаем опцию Source Is Multichannel.
    • Output Channels устанавливаете в зависимости от того, в каком формате Вы хотите сохранить звуковую дорожку. Для Stereo выбираете Downmix multichannel to Stereo (преобразовать многоканальный звук в стерео). Для сохранения многоканального (5.1) звука выбираете Keep Original Chennals. Естественно, если в исходном DVD звук был стерео, то 5.1 Вы из него не получите.
    • Включаете опцию Increase Volume automatically для увеличения громкости саундтрека до стандартного значения. Дело в том, что на DVD звук записан, как правило, слишком тихо.
    • Указываете, при необходимости, значение Delay Correction. Узнать требуемое значение можно из имени ac3 файла. В большинстве случаев значение delay равняется нулю, и указывать ее не нужно.
    • В разделе Nero AAC Options указываете способ кодирования: с переменным битрейтом (VBR), качество streaming. Кодирование с такими параметрами даст Вам файл со средним битрейтом 50..70 kbps для стерео и около 170..200 kbps для шестиканального звука. При использовании библиотек от Nero 7, для стерео кодирования можно использовать пресет Radio, т.к. в 7-й Нере значительно улучшили качество на очень низких битрейтах.
    • Profile выбираете High Efficiency, и только его. Quality: High. Затем нажимаете кнопку Ok для подтверждения настроек и возврата в основное окно MeGUI.
    • В основном окне программы, в разделе Audio, нажимаете кнопку Enqueue для занесения всего этого дела в список заданий.
    • Для запуска процесса кодирования переходите на закладку Queue,
      Закладка Queue
      и нажимаете кнопку Start. Для кодирования по очереди сразу нескольких звуковых дорожек, можно перед запуском занести их все в список заданий.
      Прогресс кодирования
    • После окончания кодирования Вы получите звуковой файл, закодированный AAC кодеком, находящийся в контейнере mp4, т.е. полностью совместимый со стандартом MPEG4.


  11. Определение битрейта видеопотока.
  12. В основном окне MeGUI открываем созданный avs файл. При этом откроется окно предпросмотра, где можно еще раз убедиться в правильности созданного avs.
    Запускаем калькулятор битрейта, зайдя в основном окне в меню Tools -> Bitrate Calculator:
    Bitrate Calculator
    Тут отобразится продолжительность фильма и количество кадров в секунду (Framerate).
    Далее необходимо произвести некоторые настройки:
    • Т.к. мы собираемся кодировать с использованием B-frames, включаем соответствующую галочку.
    • В разделе Codec выбираем x264.
    • В разделе Container выбираем MP4.
    • В разделе Audio Track 1 нажимаем кнопку Select и указываем mp4-файл, содержащий ранее закодированную звуковую дорожку, которую Вы хотите использовать по умолчанию (как правило, русскую).
    • Если Вы создаете фильм с двумя звуковыми дорожками, то ту же операцию повторяете и для второй дорожки, но уже в разделе Audio Track 2.
    • В разделе Total Size выбираете Storage Medium = 1 CD.
    После этих манипуляций в разделе Results Вы обнаружите подсчитанное значение требуемого битрейта. Нажатием кнопки Apply Вы автоматически поместите это значение в настройки кодека.


  13. Настройка кодера x264.
  14. В основном окне MeGUI в разделе Video нажимаем кнопку Config. Откроется окно настроек кодека.


    Сначала настраиваем первый проход:
    На закладке Main:

    Main
    • В разделе General соответственно устанавливаем Mode: 2pass - 1st pass.
    • Галка Turbo позволяет запустить первый проход с упрощенными настройками кодека, что сократит время кодирования при первом проходе примерно раза в три.
    • Bitrate у Вас уже подсчитан при помощи калькулятора, и стоит правильный, поэтому его не меняем.
    • В разделе Deblocking включаем Enable Deblocking. Для кодирования на 1 CD значения Deblocking Strength и Deblocking Threshold рекомендуется выбирать из диапазона (-2..0, -2..0), для анимации (0..+2, 0..+2). Для высокобитрейтного кодирования можно попробовать (-3, -3).
    • Number of Threads - количество слайсов при кодировании. Имеет смысл ставить равным количеству физических/виртуальных процессоров. Качество при этом немного упадет, но повысится скорость кодирования.
    • В разделе AVC Profiles выбираем High Profile. AVC Level - Unrestricted.


    Далее переходим на заклкдку Quantization:

    Quantization
    В разделе Quantizers большинство параметров можно оставить по умолчанию:
    • Minimum Quantizer - минимально возможный квантизер. Чем ниже это значение, тем более чёткая картинка будет получаться (при условии, что битрейт будет достаточно высоким для достижения этого квантизера). Не стоит ставить значения меньше 10, т.к. Вы получите огромный размер выходного файла. Уже при значении квантизера порядка 15-20 картинка получается почти не отличимой от оригинала. Поэтому оставляем значение по умолчанию: 10.
    • Maximum Quantizer - максимально возможный квантизер. Высокое значение этого параметра снижает детализацию картинки. Низкое - уменьшает степень сжатия. Лучше не трогать значения по-умолчанию.
    • Credits Quatizer - значение квантизера, используемое для кодирования титров в конце фильма. Для увеличения битрейта, приходящегося на основное видео, можно кодировать титры с низким качеством. Это качество и задается параметром Credits Quatizer.
    • Factor between I and P frame Quants - параметр, определяющий, во сколько раз квантизер выделяемый для I-кадров, будет меньше квантизера P-кадров.
    • Factor between P and B frame Quants - параметр, определяющий, во сколько раз квантизер выделяемый для B-кадров, будет больше квантизера P-кадров. В большинстве случаев значение 1,3 вполне удовлетворительно. Но при кодировании анимации это значение можно увеличить до 1,4..1,5.
    В разделе Quant options:
    • Обязательно включаем CABAC, что существенно скажется на улучшении качества.
    В разделе B-Frames:
    • Number of B-frames выставляете 2-3. Для низкобитрейтного кодирования (менее 1 CD) и кодирования анимации лучше выставлять 1 B-frame. Использовать больше 3-х смыла не имеет.
    • Обязательно включаем Adaptive B-Frames. Галка B-Pyramid позволяет использовать B-frames как Reference Frames, что может немного увеличить качество. Рекомендуется включать только при использовании 3-х B-frames. Без этой опции, как правило, от 3-го B-фрейма не будет толку.


    Далее переходим на закладку Rate Control:

    Rate Control
    В разделе M.E. (Motion Estimation):
    • По желанию включаете Chroma M.E. (особенно полезно для анимированного видео).
    • M.E. Range - количество итераций поиска при анализе движения. Значение по умолчанию (16) вполне удовлетворительно. Но для достижения максимального качества можете попробовать 32 (что значительно снизит скорость кодирования). Значения выше 32 использовать не рекомендуется, т.к. это может привести к ухудшению качества. Вообще, значение M.E. Range зависит от частоты кадров исходного видео. Для меньшего Framerate требуются бОльшие значения M.E. Range.
    В разделе Misc:
    • Keyframe Interval оставляем 250. Это вполне приемлемое значение.


    Закладка Zones позволяет задать в видеопотоке временные отрезки (зоны), которые будут кодироваться с каким-то постоянным значением квантизера.


    После выполнения всех настроек нажимаем кнопку Ok и возвращаемся в основное окно MeGUI.
    Там в разделе Video нажимаем кнопку Enqueue. Этим мы занесем первый проход в список заданий. Убедиться в этом можно, перейдя на закладку Queue в основном окне MeGUI.


    Теперь настраиваем второй проход:
    На закладке Main оставляем все без изменения, изменив лишь Mode на 2pass - 2nd pass.
    На закладке Quantization:

    Quantization
    Помимо уже сделанных для первого прохода настроек, делаем следующее:
    В разделе Quant options:
    • Number of Reference Frames для достижения максимально возможного качества можете выставить в 16 (максимально возможное значение). Для более быстрого кодирования можно ограничиться 4-5.
    В разделе Macroblock options:
    • Включаем все возможные галочки. Это же можно сделать, выбрав в выпадающем меню "All".
    В разделе B-Frames:
    • По желанию включаете Weighted Prediction. В х264 Weighted Prediction сделан самый простой, да еще и на B-фреймах, от которых толку практически нет, в отличие от Ateme/Nero, где WP сделан P-фреймах.


    На закладке Rate Control:

    Rate Control
    • M.E. Algorithm - алгоритм анализа движения. Для сохранения приемлемой скорости кодирования рекомендуется использовать Hexagonal motion estimation. Однако, если у Вас достаточно сложное исходное видео, или Вы хотите достичь абсолютного максимума качаства, можете попробовать Exhausive motion estimation (что значительно снизит скорость кодирования).
    • Subpixel Refinement выставляете в 6 - RDO.


    Для настройки второго прохода снова нажимаем в разделе Video кнопку Config. Там все оставляем так же, как и для первого прохода, изменив лишь Mode: 2pass - 2nd pass. Нажатием кнопки Ok подтверждаем наши настройки, возвращаемся в основное окно MeGUI, и в разделе Video нажимаем кнопку Queue для занесения второго прохода в список заданий.


  15. Запуск процесса кодирования.
    • Переходим на закладку Queue:
    • Закладка Queue
    • Нажимаем кнопку Start.
    • По окончании кодирования первого задания (первый проход), автоматически запустится следующее (второй проход).
    • По завершении второго прохода Вы получите видеофайл, зажатый кодеком AVC, и находящийся в контейнере mp4, т.е. полностью совместимый со стандартом MPEG4.


  16. Микширование видео и аудио в один файл.

    Т.к. на сегодняшний день MeGUI хреново реализует эту функцию, рекомендуется для микширования воспользоваться программой MP4Box с GUI Yamb.
    После микширования, Вы получите готовый mp4 файл, содержащий видео, аудио, возможно, субтитры, имеющий разбиение на главы как на исходном DVD.


  17. Просмотр полученного файла.

    Для просмотра наиболее подойдет плеер Nero Show Time 2.

    Хотя можно воспользоваться и наиболее быстрым на сегодняшний день плеером с поддержкой H.264 видео: The Core Pocket Media Player. Хотя он имеет непритязательный интерфейс, но в нем есть встроенные декодеры. Поэтому фильм будет проигрываться даже при отсутствии установленных в системе необходимых кодеков.

    Если же Вы привыкли к какому-то своему любимому плееру, то для просмотра Вам необходимо установить Media Splitter с поддержкой контейнера MP4, а также Core AVC Decoder.


2008 © Computer repair