[Работа с DVD. Урок 3] Перевод DVD-video из стандарта PAL в стандарт NTSC.

Тема закрыта
 
Автор
Сообщение

DarthNihilus ®

Пол:

Стаж: 9 лет 3 месяца

Сообщений: 993

Репутация: 166 [+] [-]

Откуда: Антарктида

Пост 05-Янв-2012 13:25

[Цитировать] 

Перевод DVD-video из стандарта PAL в стандарт NTSCАвтор: Mikky72Вместо предисловияПрежде всего - а зачем это нужно? Так как при подобном преобразовании неизбежно происходит некоторое ухудшение качества (насколько заметное - вопрос другой), то делать это просто так "забавы ради" врядли имеет смысл. Значит должна возникнуть ситуации, когда без этого не обойтись.
Возьмем конкретный пример, периодически всплывающий в том или ином топике. Есть NTSC DVD R1 с крутым боевиком. Картинка отличная. При этом в бонусах сидит рекламный трейлер какой-нибудь мелодрамы с Джей Ло. А при этом с трекера скачана российская лицензия DVD PAL R5 сомнительного качества самого фильма, но в бонусах, например, интервью с актерами дубляжа. Возникает желание собрать коллекционное издание под себя, взяв за основу NTSC-шный диск, заменив рекламу Джей Ло на указанное интервью.
Есть программы авторинга, которые смогут соорудить некую "химеру", в рамках которой NTSC-шный фильм будет соседствовать с PAL-ским бонусом. Но мы хотим всё делать по правилам: NTSC - так NTSC! Значит PAL-бонус подлежит перекодированию.
Весь процесс может быть представлен в виде последовательности следующих элементарных процедур:
1) извлечение из PAL-диска видео- и звуковых дорожек, относящихся к бонусу;
2) перекодирование звуковой дорожки под стандарт NTSC (она будет на 4% продолжительней по времени);
3) перекодирование видеодорожки под стандарт NTSC (NTSC предполагает 29,97 fps, а PAL 25 fps);
4) сборка мини-DVD (только бонус) в формате NTSC из полученных полу-фабрикатов;
5) подмена бонуса на родном R1-диске;
6) редактирование меню родного диска R1;
7) запись полученного коллекционного варианта на болванку.
6 из 7 этапов уже имеют довольно вменяемые инструкции.
Осталось задокументировать этап №3.

Требуемое ПО

1) Фрэймсервер AVISynth. Что это за зверь можно узнать тут
2) Программа DGIndex (бесплатная)
3) Плагин DgDecode для AVISynth для декодирования mpeg2 (бесплатный)
4) Плагин ColorMatrix для "стандартизации" цветовой шкалы (бесплатный)
4) Кодировщик Cinema Craft Encoder SP2.
Обратите внимание на согласованность версий первых 3-x элементов списка. Лично у меня такой комплект: AVISynth [2.5.8.0] + DgDecode [1.5.4] + DGIndex [1.5.4] + ColorMatrix [2.5] (обычно 2-е последних софтинки идут в одном комплекте DGMPGDec).
Инсталлируем AVISynth и CCE SP2. DGIndex, DgDecode и ColorMatrix поставляются в zip-архивах - достаточно просто распаковать.
Файлы Dgdecode.dll и ColorMatrix.dll нужно скопировать в папку плагинов AVISynth -- C:\Program Files\AviSynth 2.5\plugins (предполагается, что инсталляция производилась по дефолтному пути).
Первый этап - подготовка проекта
Чтобы не путаться, переименуем файл видеодорожки от PAL-бонуса в PAL_orig.m2v и поместим его в папку D:\DVD_project
Запускаем DGIndex.exe. Открываем файл PAL_orig.m2v.

Скриншоты 1, 2, 3



Настраиваем проект. Сначала выбираем наиболее качественный алгоритм декодирования:

Скриншот 4

Затем указываем вариант учета флагов:

Скриншот 5

А ещё надо исключить из проекта аудио (ведь мы кодируем только видео):

Скриншот 5-2

Теперь сохраняем проект:

Скриншоты 6, 7


Обратите внимание на окошко с результатами анализа клипа:

Скриншот 8

В папке теперь появится ещё один файл - PAL_orig.d2v
Часть вторая - пишем скрипт
В нашей папке D:\DVD_project создаем текстовый файл script.avs c таким текстом:
Код:
Mpeg2source("PAL_orig.d2v")
ConvertToYUY2(interlaced=true)
ColorMatrix(d2v="PAL_orig.d2v",clamp=0)
Если исходный клип был значально закодирован как прогрессивный, то тогда во второй строке скрипта надо true заменить на false.

Пояснения tartak-а к скрипту

Здесь все опции и порядок фильтров важны. Во избежание шаманизма, поясняю.
1)
а) ConvertToYUY2 нужен, поскольку СС и ССЕ в самом деле требуют YUY2. Подлянка в том, что если этот фильтр отсутствует, то и СС и ССЕ скорее всего жаловаться не будут. Конвертация YV12 -> YUY2 произойдет неявно и неправильно!
б) ConvertToYUY2 требует указания параметра interlaced поскольку от того, как закодировано, зависит апсемплинг YV12 -> YUY2 (на двд хранится цветность как среднее между 1-й и 2-й, 3-й и 4-й, ... линий - для прогрессивного кодирования, либо среднее между 1-й и 3-й, 2-й и 4-й, ... линий - для интерлейсного кодирования). Подчеркиваю, это зависит от кодирования, что никак не связано с тем, является ли источник самого ДВД прогрессивным (соседние поля соответствуют одному и тому же моменту времени) или интерлейсным (соседние поля происходят от слегка разных моментов времени). Выяснить способ кодирования можно проигрывая клип в DGIndex.
2)
а) ColorMatrix нужен для тех случаев, когда колориметрия на исходном ДВД отличается от 470 (601). СС и ССЕ цветность не меняют, но вообще не прописывают стандарт колориметрии, что для плееров означает 601. Без ColorMatrix, если в исходнике было, скажем, 709, то плеер будет неправильно передавать цвета.
б) ColorMatrix стоит после ConvertToYUY2, чтобы избежать необходимость опции interlaced и для этого фильтра. clamp=0 нужен, чтобы пропустить суперчерный и супербелый - они нужны для правильного воспроизведения теней и ярких мест.
в) Без явных параметров конверсии, ColorMatrix делает конверсию из колориметрии, заданной в d2v, в 601-ю. Это срабатывает, поскольку DGIndex, (начиная с 1.5) прописывает отсутствие колориметрии как 601-ю, а ССЕ и СС "подразумевают" ее же. Обратите внимание, такая правильная работа ColorMatrix находится в явном противоречии с документацией и намерениями ее авторов: фильтр создавался под версии DGIndex до 1.5 (которые прописывали отсутствие колориметрии как 709), а ССЕ/СС в их понимании "хочет" 709.
3) Возможности этого скрипта весьма ограничены, не надо пытаться его безоглядно расширять.
Скажем, при обратном преобразовании из NTSC в PAL, понадобится ITVC, порядок картинок может быть изменен по сравнению с d2v, а значит ColorMatrix не сработает. То же самое может приключиться и при PAL -> NTSC, если мы будем иметь дело более хитрыми каденциями, чем 2-2. В этой ситуации в ColorMatrix понадобится задействовать hints (вместо d2v), a в Mpeg2source включить их (info=3). Собственно, hints - вещь универсальная, (документация утверждает, что она медленнее d2v - я не проверял).
4) В принципе, у ConvertToYUY2 нет возможности сделать хорошую конверсию YV12 -> YUY2 при интерлейсном кодировании. Как нет ее и у декодера в железном плеере, но там ситуацию может несколько поправить деинтерлейсер (если он хороший), за счет фильтров, размазывания и т.д. Проявляется это как цветовая гребенка (или пустые/лишние линии у верхнего/нижнего края ярко окрашенного объекта) в статичных сценах. По-видимому, оптимальные результаты даст AutoYUY2 вместо ConvertToYUY2.
5) Для СС скрипт, вообще говоря, не нужен, но что именно СС делает при работе напрямую с mpeg-2 - неизвестно. Либо это нужно выяснить, либо просто всегда давать ему скрипт, над которым мы имеем полный контроль.
Часть третья - перекодируем

Запускаем ССЕ SP2. Щелчком правой кнопки мыши внутри пустого рабочего окна программы вызываем меню и добавляем файл:

Скриншот 9


Добавить нужно файл script.avs.

Скриншот 10


В окне ССE SP2 появится строчка с информацией о первом задании. Но необходимо это задание настроить. Для этого щелчком правой кнопки мыши на этой строчке опять вызываем меню и выбираем пункт Settings.

Скриншот 11


Откроется окно настроек:

Скриншот 12


Выбираем тип выходного видео (Mpeg2 для DVD) и тип кодирования (многопроходное с переменным битрейтом) - поз.1 на скриншоте. Указываем число проходов - поз.2.
Выбираем частоту кадров 23,96 fps (поз.3) - задает количество полных кадров в секунду, которые будут ужаты в выходной поток. Чтобы при этом "сохранить" все кадры из PAL, не ничего не выбрасывая, надо "замедлить" на 4% скорость воспроизведения фильма - для этого убираем галочку поз.4.
Задаем параметры битрейта (поз.5) - максимальный определяется из условия: суммарный битрейт видео, аудио и субтитров должен быть меньше 9000 kbps (на самом деле 9800, но лучше меньше).
Так как NTSC - это 29,97 fps, то кодировщик автоматически включил выполнение пуллдауна - надо указать его тип. Практически всегда делается 3:2 (поз. 6).
Выбираем аспект, соответствующий оригиналу (поз. 7) в нашем случае - 4:3.

Комментарий о возможности обрезки и смены аспекта

В примере (см. ссылки) у всего клипа идут черные полосы сверху и снизу - можно сделать обрезку и перейти к аспекту 16:9 в поз. 7 на скриншоте 12.
Для этого настроим "Area settings" таким образом:
Далее снимаем галочку с сохранения звука (поз. 8), так как у нас кодируется только видеодорожка.
Обращаем внимание на наличие галочки в поз. 9 - Inv. pulldown. Это влияет на настройку GOP-структуры (правил формирования цепочки кадров). Для этого отправляемся в Advansed settings (поз. 10).
Настроим GOP-структуру:

Скриншот 13


Для NTSC характерно N/M=5, но так как стояла галочка Inv. pulldown, то нужно поставить сюда "4".
Возвращаемся в окно настроек. Picture quality - поз. 11 на скриншоте 12 - служит для настройки фильтров, которые могут обеспечить желаемое качество (в рамках возможного, конечно). Я в примере там ничего не менял (по умолчанию стоит пресет Nature 3) - это слишком тонкий, субъективный и зависящий от каждого конкретного случая вопрос.
Теперь можно просто нажать кнопку "Encode now" (см. скриншот 12) и подождать.
Через некоторое время в рабочей папке D:\DVD_project появится файл script.mpv - это и будет наша NTSC видеодорожка.

_________________
[Нет сидов - включите DHT]


Последний раз редактировалось: DarthNihilus (2012-01-05 17:09), всего редактировалось 4 раз(а)
[Торрент-статистика]
[Профиль]  [ЛС] 
Показать сообщения:    
Тема закрыта

Текущее время: Сегодня 03:55

Часовой пояс: GMT + 4



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы