Добавление своих субтитров для DVD

Дата публикации: 2007-01-07

Почти все пиратские диски (кроме некоторых полных копий с R5) к сожалению не содержат русских субтитров, а мне иногда так хочется посмотреть фильм на языке оригинала, с оригинальной ничем не испорченной звуковой дорожкой, помогая себе русскими субтитрами (язык то все равно плохо знаю :) ). Да иногда и английские субтитры не помешали бы... При том что сами субтитры найти в интернете - не проблема.

В данной статье я расскажу пару способов которыми я добавляю свои субтитры для DVD.

Почти все пиратские диски (кроме некоторых полных копий с R5) к сожалению не содержат русских субтитров, а мне иногда так хочется посмотреть фильм на языке оригинала, с оригинальной ничем не испорченной звуковой дорожкой, помогая себе русскими субтитрами (язык то все равно плохо знаю :) ). Да иногда и английские субтитры не помешали бы... При том что сами субтитры найти в интернете - не проблема.

Учится смотреть мне кажется надо так:
1. Сначала смотрим фильмы на русском языке с включенными английскими субтитрами (предполагаются именно английские - это для меня предочтительней - поскольку фильмы почти все на английском :) )
2. Потом тренируемся смотреть фильмы на английском, с русскими субтитрами.
3. Затем на английском, с английскими же субтитрами (разговорную речь распознать тяжелее чем текст)
4. Ну и в результате надо стремится смотреть фильм на языке оригинала не отвлекаясь ни на какие субтитры :)

В данной статье я расскажу пару способов которыми я добавляю свои субтитры для DVD.

Для начала нам необходимы собственно сами субтитры.
Очень большой сайт с субтитрами на различных языках - divxsubtitles.net (на нем нужно зарегистрироватся)
И еще один сервер (здесь в основном русские субтитры) - subtitles.ee
Для работы с субтитрами понадобится программа Subtitle Workshop

У обоих способов есть один общий момент - для работы необходимо сначала разложить имеющийся dvd-фильм на потоки: отдельно видео, отдельно аудио, и субтитры.
Разложить можно с помощью программы vobedit - открываем первый файл из тех vts*.vob которые содержат собственно сам фильм. Самый простой признак по которому его можно определить - эта серия vts_nn_X.vob имеет самый большой размер

Выбираем файл vts_nn_1.vob - именно с этого контейнера как правило начинается фильм. vts_nn_0.vob содержит (или не содержит :) ) меню, иногда дополнения оформленные в виде меню - фильмографии любят так делать.
После открытия нажимаем Demux - ставим галочки чтоб обработал всю эту серию и жмем OK.

Программа спросит куда сохранить аудио-файл - указываем каталог, туда будут сохранены и видео, и аудио, и потоки с субтитрами.

Итак - первый способ с помощью программы IfoEdit и DVDSupTools

Необходимо подготовить файл с субтитрами в формате MicroDVD (расширение .sub). Вам нужно знать в каком формате ваш видеофильм PAL или NTSC - это нужно при кодировании субтитров и для выравнивания их по времени. Подробно я на этом пока останавливатся не буду, считаем что у вас есть подготовленный .sub файл и вы знаете в каком формате ваш фильм PAL или NTSC.
Теперь настроим DVDSupTools
В состав входят три утилиты:
DVDSupEncode.exe - подготавливает нужный нам бинарный .sup файл из субтитров в тесктовом формате .sub,
DVDSupHTML.exe - генерирет html файл, (при указании опции -bitmap будут сгенерированы и файлы - изображения субтитров) из готового бинарного sup файла
DVDSupDecode.exe - то же что и DVDSupHTML.exe но в текстовом формате. При генерации sup файла нам необходимо еще знать палитру.
Небольшое отступление в теорию: субтитры в DVD - это по сути обычные битмапы, где на информацию о цвете выделено 2 бита. Таким образом субтитры могут отобразить 4 разных цвета. Кроме того каждый набор VTS (Video Title Set) содержит информацию о палитре из 16 цветов. Причем каждый из этих цветов кодируется тремя байтами - т.е. задает 24-битный цвет. Каждые субтитры содержат информацию о своей палитре, из 4 цветов, которые берутся из палитры VTS. Т.е. пусть, например, субтитры имеют палитру 4C6F - это означает что пиксел в изображении с цветом 0 (двоичное 00) будет рисоватся цветом 4 из палитры VTS, пиксел с цветом 1 (01) - цветом С (или в десятичном = 12), пиксел с цветом 2 (10) - цветом 6 из палитры VTS, и наконец пиксел с цветом 3 (11 - двоичное) - будет рисоватся цветом F (десятичное 15) из палитры VTS.
Такого запаса цветов вполне хватает даже для реализации системы караоке (первый цвет - граница, для удобочитаемости, второй - собственно сам текст, третий - караоке при закрашивании и четверты на запас :) )

Вот такую палитру из четырех используемых цветов нам надо узнать. Сделать это можно если у нас есть субтитры с DVD над которым мы работаем.

DVDSupDecode.exe VTS_02_0.20.sup
Результатом работы будет файл VTS_02_0.20.txt, в нем мы видим такие строчки
Palette=3210
Alpha=FFF0
Эти значения и занесем в DVDSupEncode.ini
Небольшое отступление об установке и настройке DVDSupTools. Эта программа идет как обычный архив, без инсталятора, с помощью, состоящей из одного лишь readme.txt (в который я например заглянул лишь потом, прежде чем выяснил, не без помощи filemon'а и regmon'a :), что эта программа свои настройки читает из файла, который лежит в довольно нестандартном месте :) ).
Во-первых вы должны знать что эта программа читает настройки из файла DVDSupEncode.ini который должен лежать Х:\Documents and Settings\\DVDSupEncode.ini - программа была разработана под Windows 2000, я сам тоже использую именно эту ОС, поэтому пользователям других ОС не смогу подсказать где именно нужно положить этот файл, одно лишь могу сказать: месте должно быть похожим :)
И во-вторых, для корректной обработке русских субтитров параметр FontCharSet должен быть равным 204, а сам текстовый файл с русскими субтитрами должен быть в кодировке Windows CP-1251.
Вот так выглядит мой .ini файл.
[Default]
FrameW=720
FrameH=576
FrameRate=25
Delay=0
ShowBitmap=0
OnTop=0
Contour=1
Indent=40
DynamicSize=0
Palette=3210
Alpha=FFF0
FontName=Arial
FontCharSet=204
FontSize=23
FontStyle=REGULAR


[NTSC]
FrameW=720
FrameH=480
FrameRate=29.97
Delay=0
ShowBitmap=0
OnTop=0
Contour=2
Indent=40
DynamicSize=0
Palette=3210
Alpha=FFF0
FontName=Arial
FontCharSet=204
FontSize=23
FontStyle=REGULAR


У меня фильм был в формате PAL поэтому строчка для генерации была такой
DVDSupEncode.exe -p:Default Minority_report_RUS_2002.sub
получили в результате Minority_report_RUS_2002.sup Теперь запускаем IfoEdit и открываем в нем ifo файл для нашего фильма (открываем именно тот ifo в котором находится управляющая информация о фильме)

Выбираем VTS_PGCITI, и в раскрывающемся списке выделяем VTS_PGS_X с фильмом (его можно определить по времени, видите надпись Playback time, или по большому количеству чаптеров - Number of cells). Выбираем в меню Tools -> Save Celltimes to file, и сохраняем список глав в текстовый файл. Затем для удобства закрываем самый верхний раскрывающийся список (с ifo-файлом - чтобы видет все звуковые дорожки и субтитры оригинального диска) и запускаем еще один экземпляр IfoEdit, выбираем в меню DVD Author -> Author new DVD

Теперь указываем все необходимые видео, аудио, файлы с субтитрами, и файл со списком глав (помните делали Save Celltime to file ? ), и сразу же выставляем выставляем язык у субтитров и аудио (не зря же мы открыли второй экземпляр IfoEdit, например файл VTS_01_0.22.sup соответсвует в оригинальном DVD субтитрам с ID=0x22 Suomi)

Ну вот собственно и все, указываем каталог где будет собиратся новый DVD и нажимаем Ok.

Когда DVD соберется, закройте на всякий случай оба экземпляра IfoEdit и снова запустите его. Теперь откройте оригинальный ifo и выберите VTS_PGC_X с фильмом. Затем откройте ifo с фильмом из нового, собранного вами DVD (тут вариантов нет :), открывать нужно будет VTS_01_0.IFO). Теперь выбрав VTS_PGC_X с фильмом из оригинального DVD выберите в меню Copy Colors from this PGC. Затем выбрав VTS_PGC_X нового DVD выберите в меню Paste Colors into this PGC

Затем сохраните изменения в ifo-файлах - тем самым мы восстановили палитру с оригинального DVD, для правильного отображения субтитров

Второй способ - с помощью DVD Maestro