BitTorrent Трекер RusTrek.ru
http://5.45.70.241/

Создание видеодорожки для DVD (mpeg2) из прогрессивного HD-источника (h264) и сопутствующие моменты
http://5.45.70.241/viewtopic.php?f=11&t=3653
Страница 1 из 1

Автор:  oartemka178 [ 2010-11-13 23:20 ]
Заголовок сообщения:  Создание видеодорожки для DVD (mpeg2) из прогрессивного HD-источника (h264) и сопутствующие моменты

Создание видеодорожки для DVD (mpeg2) из прогрессивного HD-источника (h264) и сопутствующие моменты
Версия 1.1
от 13.11.2010 г.
Введение

В последнее время приходится всё чаше встречаться с видеоматериалом в HD-качестве (т.е. в высоком разрешении). Тем не менее, хочется сохранить себе в коллекцию данное видео именно в DVD-формате (причины могут быть разные, не будем углубляться в этот вопрос). Наиболее часто приходится иметь дело с файлом формата MKV (контейнер «матрёшка»), содержащим видео, сжатое кодеком h264. Именно для этого типового варианта и составлена данная инструкция.
Инструкция разделена на три части, так как весь процесс преобразования формата видео можно разделить на три стадии:
а) декодирование исходного формата;
б) преобразование параметров видео (разрешение, цветовая шкала и т.п.);
в) кодирование в требуемый формат.
Существует два основных подхода к реализации данного процесса. Первый подход состоит в том, что каждая стадия для всего видеоряда должна полностью завершиться до начала следующей. Результаты каждой стадии сохраняются на жестком диске в виде файлов. Но при этом потребуются слишком большие объемы дискового пространства (особенно для хранения несжатого видео после первой и второй стадий). По этой причине рассматривается только второй подход – следующая стадия начинается, когда один кадр прошел предыдущую (т.е. происходит покадровая передача кадров по цепочке). В этой ситуации нет необходимости хранения огромных файлов с промежуточной информацией. Но для связи отдельных операций в единый процесс потребуется специальное средство – фрейм-сервер AVISynth.
Часть 1
Декодирование HD-видео

Для того, чтобы декодировать h264-видео при помощи AVISynth, необходимо воспользоваться специально предназначенным для этого плагином. Универсальным вариантом на сегодняшний день является использование бесплатного декодера FFMpegSource2.
В данном примере файлы декодера скачаны с официального сайта и помещены в папку C:\Program Files\FFMpegSource2\. Сам видеоматериал (файл film.mkv) помещен в папку D:\Video\.
Чтобы процесс декодирования прошел успешно, видеоматериал должен быть проиндексирован, т.е. декодер должен предварительно «познакомиться» с материалом. Для этого в проводнике Windows щелкаем правой кнопкой мышки на файле film.mkv и в меню выбираем вариант «Открыть с помощью…» - «Выбрать программу». В появившемся окне с помощью кнопки «Обзор» указываем в качестве программы утилиту ffmsindex.exe из папки декодера.
Через пару минут в папке D:\Video\ появится служебный файл film.mkv.ffindex.
Покадровое декодирование самого видео при посредничестве фрейм-сервера AVISynth начнется при открытии в видеоредакторе или кодировщике скрипта - специального текстового файла с командами, имеющего расширение *.avs (в примере он будет называться scrypt.avs). Ниже приводится текст скрипта (скрипт можно писать стандартным Блокнотом Windows), с помощью которого можно убедится в работе декодера и посмотреть на параметры видеодорожки:
Цитата:
LoadPlugin("C:\Program Files\FFMpegSource2\ffms2.dll") # подключение декодера
FFVideoSource("D:\Video\film.mkv") #открытие видео
Coloryuv(analyze=true) #проверка, цветового диапазона
Открыв полученный скрипт scrypt.avs в программе VirtualDub, просмотрим несколько эпизодов видео, обращая внимание на показатели, которые на скриншоте обведены красной рамкой.
Наблюдение за колебаниями этих параметров позволяет сделать вывод о типе яркостной шкалы: 0-255 или 16-235. В примере явно имеет место шкала 16-235, так как параметры ни разу не вышли за границы этого диапазона. Следует отметить, что единичные переходы границ на 1 пункт скорее следует воспринимать как ошибки, так как признаком шкалы 0-255 будет более существенный и стабильный выход за границы 16 вниз и 235 вверх.
Часть 2
Подготовка видео к кодированию
Прежде всего, надо удалить из скрипта ненужную команду анализа видео (мы ведь не хотим любоваться значениями параметров яркости при просмотре фильма на домашнем кинотеатре в семейном кругу).
Также следует обратить внимание на размер кадра. Если размер видео-кадра по вертикали не кратен 4-м, то могут возникнуть неприятные проблемы при преобразованиях. В такой ситуации (а в примере видео имеет вертикальное разрешение 546 точек) следует сразу после открытия видеофайла обеспечить такую кратность подрезкой нижней части кадра высокого разрешения на 2 пикселя. Для этого добавим в скрипт команду:
Цитата:
crop (0,0,0,-2) # если высота не кратна 4
Далее следует произвести конверсию цветового пространства при помощи плагина AutoYUY2. В данном примере файлы плагина скачаны с официального сайта и помещены в папку C:\Program Files\AutoYUY2\. Добавляем в скрипт строки:
Цитата:
LoadPlugin("C:\Program Files\AutoYUY2\AutoYUY2.dll") #подключение плагина
AutoYUY2() # конверсия цветового пространства
Следующим этапом подготовки видео является корректировка матрицы цветовых коэффициентов с помощью плагина ColorMatrix. В данном примере файлы плагина скачаны с официального сайта разработчиков и помещены в папку C:\Program Files\ColorMatrix\. Добавляем в скрипт строки:
Цитата:
LoadPlugin("C:\Program Files\ColorMatrix\ColorMatrix.dll")
ColorMatrix(mode="Rec.709->Rec.601", inputFR=false, clamp=0) # 16-235
#ColorMatrix(mode="Rec.709->Rec.601", inputFR=true, clamp=0) # 0-255
Как видно, две строчки с Colormatrix почти одинаковые (они используются в случае, если анализ в VirtualDub показал те или иные результаты). Решеточкой отключается ненужный вариант. Для нашего исходника останется вариант с яркостью 16-235, а второй вариант превращен просто в комментарий.
Теперь поговорим о размере и пропорциях картинки. На HD-источниках используют так называемые "квадратные" пиксели, соответсвенно, отношение количества точек по вертикали и горизонтали совпадает с пропорциями самой картинки.
Высокое разрешение на подходит для DVD. Максимальным разрешением для DVD является 720х576 (для PAL) или 720х480 (для NTSC). При этом в обоих случаях используются "неквадратные" пиксели разной степени "сплющенности" - первая степень сплющенности позволяет формировать картинку с пропорциями 4:3, вторая степень - 16:9.
Так как придется считать, то введем следующие обозначения:
Ho - высота исходного видео в пикселях;
Wo - ширина исходного видео в пикселях;
AR - пропорции будущего DVD (AR=4/3 или AR=16/9);
hhh - высота полезного изображения на DVD;
www - ширина полезного изображения на DVD;
bbb - ширина каждой из 2-х (верхней и нижней) "черных полос", дополняющих полезное изображение до полного кадра на DVD.
Определение размеров для PAL:
Цитата:
www = 720
hhh = 576 * AR * Ho / Wo (округляем до ближайшего числа, кратного 8)
bbb = (576 - hhh) / 2
Определение размеров для NTSC:
Цитата:
www = 720
hhh = 480 * AR * Ho / Wo (округляем до ближайшего числа, кратного 8)
bbb = (480 - hhh) / 2
В примере исходник, имеющий после подрезки размеры Wo=1280, Ho=544, кодируется в PAL DVD, у которого AR=16/9. C учетом округлений до кратности 8 получаем: www=720, hhh = 432 пикселей, bbb = 72.
С учетом этого добавляем в скрипт scrypt.avs команды изменения размеров кадра:
Цитата:
BicubicResize(720, 432, 0, 0.5) #ресайз методом Catmull-Rom spline
AddBorders (0,72,0,72) # добавление черных полос
Кроме того, следует учесть, что частота кадров фильма в системе PAL составляет 25 кадров в секунду (в NTSC – 23,976 кадров в секунду). Зададим нужную частоту кадров добавлением в скрипт команды:
Цитата:
AssumeFPS(25) #изменение частоты кадров под стандарт PAL 25 кадров/сек
Если бы на выходе требовалось подготовить материал в NTSC, то надо было бы вставить команду:
Цитата:
AssumeFPS ("ntsc_film") #изменение частоты кадров под стандарт NTSC
В итоге полный текст скрипта scrypt.avs будет выглядеть так:
Цитата:
LoadPlugin("C:\Program Files\FFMpegSource2\ffms2.dll") # подключение декодера
FFVideoSource("D:\Video\film.mkv") #открытие видео
crop (0,0,0,-2) # если высота не кратна 4
LoadPlugin("C:\Program Files\AutoYUY2\AutoYUY2.dll") #подключение плагина
AutoYUY2() # конверсия цветового пространства
LoadPlugin("C:\Program Files\ColorMatrix\ColorMatrix.dll") #подключение плагина
ColorMatrix(mode="Rec.709->Rec.601", inputFR=false, clamp=0) # 16-235
#ColorMatrix(mode="Rec.709->Rec.601", inputFR=true, clamp=0) # 0-255
BicubicResize(720, 432, 0, 0.5) #ресайз методом Catmull-Rom spline
AddBorders (0,72,0,72) # добавление черных полос
AssumeFPS(25) #изменение частоты кадров под стандарт PAL 25 кадров/сек
Этот скрипт будет использоваться для подачи подготовленного видео в кодировщик MPEG2.
Часть 3 Кодируем видеодорожку
Вариант 1 - кодировщик Cinema Craft Encoder SP3
Запускаем предварительно инсталлированный кодировщик CCE SP3. В пустом поле слева (рис. 3) щелкаем правой кнопкой мышки и выбираем Add Source...
Через появившийся стандартный Проводник (рис.4) показываем файл скрипта scrypt.avs (становится виден, если выбран показ «все файлы»).
Выскочит окошко, предлагающее выбрать базовый тип проекта. В данном случае следует указать «PAL DVD Film» (рис. 5).
При создании видеодорожки для диска в стандарте NTSC надо выбрать вариант «NTSC DVD Film (pulldown)».
В правой части главного окна кнопкой 1 (рис. 6) раскроем настройки видео и зададим нужные нам параметры: предназначение дорожки (позиция 2), телевизионную систему (позиция 3), соотношение сторон (позиция 4). В позиции 3 следует выбрать многопроходное кодирование с переменным битрейтом и задать количество таких проходов в позиции 6 (двух-трех проходов вполне достаточно).
Для системы PAL характерно воспроизведение фильмов со скоростью 25 кадров в секунду (поз. 7). При кодировании фильма в NTSC следует в этой позиции выбрать 23,976 и чуть правее указать тип пуллдауна, например, 3:2 pulldown. В обоих случаях должна быть снята галочка Rate Conv.
В позиции 8 следует указать желаемый размер видеодорожки в тех или иных единицах измерения, исходя из доступного места на DVD-болванке с учетом размеров звуковых дорожек, бонусов и меню. Этот размер будет определять значение среднего битрейта (первое число в позиции 9), по этой причине надо следить, чтобы он не превысил максимально допустимого. Максимально допустимй битрейт видео (третье число в позиции 9) не может быть более 9800 кбит/сек. Также максимальный битрейт ограничивается условием нахождения суммарного битрейта фильма (видео со всеми звуковыми дорожками и субтитрами) в пределах 10 Мбит/сек. Минимальный битрейт (второе число в позиции 9) не рекомендуется ставить менее 2000 кбит/сек.
После установки этих настроек кнопкой 1 можно обратно свернуть Video settigs и приступить к настройке MPEG Settings, окно которых разворачивается соответствующей кнопкой в правой части главного окна программы.
В данном окне можно оставить неизменными все настройки, кроме поля «Offset line». Для нашего прогрессивного исходника в этом окне следует выставить «0».
Для более тонкой настройки параметров кодирования следует переме-ститься в главное меню программы в пункт «Window». В этом меню выберем пункт «Picture» (рис. 8).
После этого откроется окно (рис. 9) в котором следует указать настройки кодирования наилучшим образом учитывающие особенности исходного видео.
Любые параметры могут быть установлены вручную, но это задача для профессионала, которому данная инструкция не нужна. Начинающим рекомендуется первым делом выбрать один из подходящих наборов параметров (пресетов) в верхней части окна. При выборе следует учесть следующее:
- пресеты группы Natural адаптированы под стандартное игровое или документальное кино;
- пресеты группы Animation заточены под рисованные мультфильмы с четкими контрастными границами объектов;
- пресеты группы CG подходят для более мягкой компьютерной графики;
- цифра в обозначении пресета говорит о степени подавления мелких деталей в изображении, чем больший номер имеет пресет в пределах группы, тем сильнее «замыливается» картинка (данная трактовка отличается от разъяснений разработчиков CCE, но более наглядно описывает результат применения пресета).
Только после выбора пресета следует в нижней части окна указать про-грессивный характер источника видео (красная стрелка на рис. 9).
Далее следует закрыть это окно и настроить параметры матрицы квантизации через меню Window – Segment (рис. 10).
Как и в предыдущем случае, новичка имеет смысл выбирать одну из предлагаемых разработчиками матриц (рис. 11). Чтобы выбор был обоснованным следует дать некоторые разъяснения.
Матрица Natural 1 является предлагаемой по умолчанию матрицей и не имеет четкой ориентации – универсальная матрица «для всего». В случае игрового кино (live-action) лучший результат может показать матрица Natural 2. Если кодирование несложного видео (нет пламени, водной ряби, листвы на деревьях и быстрых движений) ведется с высоким битрейтом можно порекомендовать матрицу MPEG Standard. Матрица OG 1 подойдет для мультфильмов и компьютерной графики, а в ситуации недостаточно высокого битрейта можно воспользоваться её модификацией OG 2.
После выбора матрицы можно закрыть данное окно и приступать к кодированию. Для этого в левой части главного окна программы надо щелкнуть правой кнопкой мышки на имени скрипта и выбрать вариант «Encode» (рис. 12). Когда кодирование закончится (это очень долгий процесс), программу можно закрыть. В папке D:\Video\ появится файл видеодорожки scrypt.m2v.
Вариант 2 - кодировщик Rhozet Carbon Coder
Процедура работы в Carbon Coder значительно проще. После запуска программы открываем скрипт (Source – Add).
Подскажем кодировщику, что видео на входе в данном примере прогрессивное (non-interlaced), имеет пропорции 16:9 и не содержит аудио (рис. 14).
Теперь укажем характеристики желаемого видео. Для начала укажем (рис. 15) «целевой шаблон» - DVD системы PAL наивысшего качества (или NTSC, если собираемся делать такой вариант).
В появившемся окне (рис. 16) внесем изменения в настройки:
1 – укажем папку назначения;
2 – зададим пропорции изображения;
3 – включим двухпроходное кодирование;
4 – укажем средний, минимальный и максимальный битрейт (соображения по поводу битрейта аналогичны вышерассмотренным для варианта с CCE SP3;
5 – отключим работу с аудио.
На рис. 17 показаны отличия в настройках для кодирования видеодорожки в стандарте NTSC.
Теперь можно запускать процесс кодирования (рис. 18).
По окончании процесса кодирования в папке D:\Video появится файл видеодорожки scrypt_MPEG2_DVD_PAL(Mastering).m2v
Конец

Версия 1.1 от 21.10.2010 г.

Архивная инструкция в формате справи *.chm, предоставленная germanm2000 Версия 1.0

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/