Loading...
Error

Переделка меню на DVD

Ответить на тему
 
Автор Сообщение

televizionchik


48Mbps    14Mbps

Рейтинг:

Стаж: 7 лет 5 месяцев

Сообщений: 1571

Откуда: Russia

Россия


post 07-Май-2009 05:40

Quote Сообщить о нарушении

Часть 1, простая. Убираем кнопки в статичном меню.
Обычная история, скачали DVD-9, в котором полно рекламы или неинтересных допов. После их удаления (разумеется, с помощью DVD Remake Pro), остается DVD-5. Все хорошо, но в меню остается кнопка, ведущая к удаленному материалу. Кнопку деактивировать легко. Но хочется, чтобы ее в меню вообще не было.

Используемый инструментарий: DVD Remake Pro (3.5.3 и выше), MuxMan (0.18.10 и выше), Photoshop (или подобный редактор)
Экспортируем меню из Римейка
Разумеется, к этому моменту DVD уже открыт в Remake, и мы смотрим на меню. Правой кнопкой щелкаем в окне просмотра, выбираем "Export Frame":


Стираем кнопку в Фотошопе
В результате предыдущего шага мы получаем bmp файл с нашим меню, которое мы редактируем в Фотошопе. Работа с Фотошопом находится за рамками данного руководства. Отмечу только, что кнопки можно стирать, но остающиеся трогать нельзя (иначе придется менять подсветку, см. Часть 2). Сохраняем в том же формате bmp, не изменяя размер.

Муксим с помощью MuxMan
Добавляем редактированное меню к проекту в MuxMan:


Обратите внимание, никакие установки видео задавать не нужно: MuxMan автоматически определяет тип (PAL или NTSC) по размеру картинки (720х576 - PAL, 720х480 - NTSC).
Выбираем папку для результата работы и запускаем MuxMan:


Импортируем в Римейк
В результате предыдущего шага, у нас получился маленький DVD, который мы открываем в Римейке


Снова щёлкаем правой кнопкой в окне просмотра, выбираем "Replace with still"


Слева, в окне Data Pools, только что открытый DVD с редактированным меню будет последним в списке. Выбираем его, с радостью видим наше меню, щелкаем OK:


Прячем виртуальную кнопку
На предыдущем шаге, Римейк поменял картинку с меню. При этом, все остальное (команды, аудио - если оно там было, подсветка) осталось неизменным. Именно поэтому нам не нужно было муксировать ничего кроме самой картинки меню. Все, что нам осталось сделать - это дезактивировать виртуальную кнопку. DVD ничего не знает про нарисованную кнопку (или ее отсутствие). Зато он знает номер и координаты прямоугольника виртуальной кнопки (подсветка тоже связана с этим прямоугольником). Щелкаем правой кнопкой на зеленом прямоугольнике, выбираем "Hide button"


Результат:


Экспортируем модифицированные файлы
Нам осталось сделать "Export Modified Files" (Ctrl-M) - мы поменяли очень маленькую часть файлов нашего DVD и нам нет смысла делать полный экспорт.
Мы можем экспортировать в ту же папку, что и оригинал, заменяя существующие файлы. Я предпочитаю хранить резервную копию оригинальных файлов; поэтому делаю экспорт в новую папку, куда добавляю файлы из папки с оригиналом (очень удобно - достаточно перенести все файлы из старой папки в новую, но при этом запретить замену уже существующих файлов в новой папке).

Меню до:


Меню после:


Часть 2, похитрее. Кнопки добавляются, подсветка появляется, команды идут.
Работаем с меню 16х9!

Используемый инструментарий: DVD Remake Pro, SubRip, MuxMan, Photoshop

В процессе...Пока одни картинки

Нашли менюшку, делаем для нее новый проект


Копируем в старом

Добавляем в новый


Экспортируем


Берем на заметку потоки с подсветкой


Меню - на экспорт


Кнопки - на экспорт


Color Scheme - на экспорт


CLUT - на экспорт


Открываем в SubRip


Открываем...


Открываем...


Выбираем поток с нужной подсветкой, Wide


Сохраняем


Нужно имя


Установки - цвет


Установки - обрезки нет


Вот она она!


Сохранили - приросла цифирька


Повторяем для Pan & Scan


Фотошоп - Color Table


Сохраняем Color Table


В RGB


Собираем слои,


Ага, WS highlight слой - в проект с меню


Задний план - тоже в слой


Прозрачность - вот оно каково!


Анаморф: растягиваем (720x480 -> 854x480 NTSC), (720x576 -> 1024x576 PAL)
4:3 - растягиваем (720x480 -> 720x540 NTSC), (720x576 -> 768x576 PAL)

До и после удаления текста


Меню до и после


Новое меню


Новое меню с подсветкой


Новое меню с подсветкой - крупно


Сжимаем меню обратно до (720x480 NTSC), (720x576 PAL)
WS highlight - одну копию сжимаем как меню,
из другой (других) делаем
PS (Pan & Scan):
1. Меняем размер картинки на (960x480 NTSC), (960x576 PAL)
2. Меняем размер канваса на (720x576 PAL) (720x480 NTSC). Не трогаем контроли расположения картинки - она должна оставаться в центре. Картинка обрежется по бокам.
LB (Letterbox):
1. Меняем размер картинки на (720x432 PAL) (720x360 NTSC)
2. Меняем размер канваса на (720x576 PAL) (720x480 NTSC). Не трогаем контроли расположения картинки - она должна оставаться в центре.
3. Заполняем пустой канвас сверху и снизу красным цветом.

Меняем на индекс - палитра, загружаем сохраненную Color Table
(если вы уверены, что у вас в картинке остались те же четыре чистых цвета, то ее можно сохранить как обычный bmp, без конвертации в индекс)


Не размазывать!


Сохраняем подсветку для моды Wide, как 4-бит OS/2 bmp - WS_ED.bmp

То же делаем для остальных необходимых мод.

Сохраняем следующий текст как WS.sst:

Код:

st_format       2
Display_Start   forced
TV_Type         NTSC
Tape_Type       NON_DROP
#               2 pixels out of 480 are unavailable for subtitles
Pixel_Area      (2 479)
Display_Area    (0 2 719 479)
#               Draw your highlight with red (background, BG),
#               black (pattern, PT),
#               blue (emphasis 1, E1),
#               and white (emphasis 2, E2)
E2              (255 255 255 = = =)
E1              (0 0 255 = = =)
PA              (0 0 0 = = =)
BG              (255 0 0 = = =)
#               Mapping to CLUT
#               (E2 E1 PA BG)
Color           (1 1 1 1)
#               Transparency (0-15): 0 - fully transparent, 15 - fully opaque
#               (E2 E1 PA BG)
Contrast        (0 0 0 0)
#               Next line means the highlight bmp is in same directory as this sst file
Directory       .
#               Zero start and finish mean default time for muxing app
#               WS_ED.bmp - name of highlight file
1               00:00:00:00 00:00:00:00 WS_ED.bmp
#               Comment added to ensure carriage return in the previous line -
#               when copied from a web page
SST (формат Сценариста) указывает на созданный ранее bmp. Файл с подсветкой, WS_ED.bmp, должен быть в той же папке, что и WS.sst

WS.sst файл для PAL

st_format       2
Display_Start   forced
TV_Type         PAL
Tape_Type       NON_DROP
#               3 pixels out of 576 are unavailable for subtitles
Pixel_Area      (2 574)
Display_Area    (0 2 719 574)
#               Draw your highlight with red (background, BG),
#               black (pattern, PT),
#               blue (emphasis 1, E1),
#               and white (emphasis 2, E2)
E2              (255 255 255 = = =)
E1              (0 0 255 = = =)
PA              (0 0 0 = = =)
BG              (255 0 0 = = =)
#               Mapping to CLUT
#               (E2 E1 PA BG)
Color           (1 1 1 1)
#               Transparency (0-15): 0 - fully transparent, 15 - fully opaque
#               (E2 E1 PA BG)
Contrast        (0 0 0 0)
#               Next line means the highlight bmp is in same directory as this sst file
Directory       .
#               Zero start and finish mean default time for muxing app
#               WS_ED.bmp - name of highlight file
1               00:00:00:00 00:00:00:00 WS_ED.bmp
#               Comment added to ensure carriage return in the previous line -
#               when copied from a web page
Далее делаем такой же файл PS.sst - для подсветки PS (только меняем имя bmp, на который он указывает).

MuxMan - выбираем видео (меню)


Аттрибуты меню


Подсветка для моды Wide. Добавляем файл WS.sst (не bmp!!!), как первый поток субтитров. Открывается окно менеджера


PS.sst добавляется как второй поток первого трека субтитров

Муксим!


Импортируем CLUT, Color Scheme, старые кнопки (то, что мы экспортировали раньше).
Добавляем новые кнопки


Кнопки добавлены


Чиним навигацию


Навигация починена


Скопировали


Приклеили поверх старого


Крупный план до


Крупный план после


Изменение команд - в каждом конкретном случае разное.
Просто как пример изменения довольно продвинутой навигации:
Команды на кнопках до


Сразу видно, что при выборе аудио мы уходим в PGC 8, а субтитров - PGC 9; R[2] служит для передачи номера нажатой кнопки. Делаем по тому же образцу:
Команды на кнопках после


Проходим в дебаггере, обнаруживаем в "Root" и "Angle" меню в VTS с фильмом схожие команды, задающие аудио и субтитры:

Код:

audio = R[12]; sub-picture = R[13]


Если мы в меню с установками (то, над которым мы так потрудились) не заглянем, то R[12] и R[13] присваиваются нулевые значения в PGC 4 Видео Менеджера:

Код:

1  R[15] = 99
2  R[12] = 0
3  R[13] = 0
4  R[1] = preferred_sub-picture_language
5  R[0] = preferred_audio_language
6  NOP
7  NOP
8  Jump VTS 2 "angle" menu (title 1)
Нули означают 1-й трек аудио и 1-й (в оригинале - единственный) трек субтитров, причем отключенный (объяснить здесь).
Что характерно, предпочтительные языки аудио и субтитров (то, что Вы можете установить в хорошем плеере) присваиваются в регистры R[0] и R[1], но потом нигде не используются. При авторинге используются программы "высокого уровня", типа Сценариста, которые используют шаблоны и abstraction layer. Никто настоящие команды не видит (отсюда и огромное число совершенно ненужных, бессмысленных команд). При авторинге явно использовался шаблон, рассчитанный на разные языки. Тем лучше для нас! Меняем на

Код:

1  R[15] = 99
2  R[12] = 0
3  R[13]=0
4  R[1] = preferred_sub-picture_language
5  R[0] = preferred_audio_language
6  if (R[0] == 29301 ("ru")) R[12] = 2
7  if (R[1] == 29301 ("ru")) R[13] = 1
8  Jump VTS 2 "angle" menu (title 1)
Если предпочтительный язык - русский, будет выбран русский аудио трек и русские субтитры (как будет ясно позже - в отключенном состоянии). При любом другом языке предпочтения - будут выбраны английские треки.

Далее изучаем работу меню с установками. Перед тем, как мы в него попадаем, исполнялись команды (pre commands):

Код:

1  R[0] = 99
2  if (R[0]==R[5]) goto line 12
3  R[0] = 100
4  if(R[0]==R[5]) goto line 23
5  R[0] = 0
6  if (R[0] == audio) highlighted_button = 1024 (button 1)
7  R[0] = 1
8  if (R[0] == audio) highlighted_button = 2048 (button 2)
9  NOP
10  NOP
11  goto line 24
12  R[0] = sub-picture
13  R[0] &= 63
14  R[1] = 0
15  if (R[1] == R[0]) highlighted_button = 3072 (button 3)
16  R[1] = 1
17  if (R[1] == R[0]) highlighted_button = 5120 (button 5)
18  R[0] = sub-picture
19  R[0] &= 64
20  R[1] = 0
21  if (R[1] == R[0]) highlighted_button = 4096 (button 4)
22  goto line 24
23  highlighted_button = 5120 (button 5)
24  NOP
Меняем на

Код:

1  R[0] = 99
2  if (R[0] == R[5]) goto line 14
3  R[0] = 100
4  if (R[0] == R[5]) goto line 27
5  R[0] = 0
6  if (R[0] == audio) highlighted_button = 1024 (button 1)
7  R[0] = 1
8  if (R[0] == audio) highlighted_button = 2048 (button 2)
9  R[0] = 2
10  if (R[0] == audio) highlighted_button = 3072 (button 3)
11  NOP
12  NOP
13  goto line 28
14  R[0] = sub-picture
15  R[0] &=64
16  R[1] = 0
17  if (R[1] != R[0]) goto line 20
18  highlighted_button = 6144 (button 6)
19  goto line 28
20  R[0] = sub-picture
21  R[0] &= 63
22  R[1] = 0
23  if (R[1] == R[0]) highlighted_button = 4096 (button 4)
24  R[1] = 1
25  if (R[1] == R[0]) highlighted_button = 5120 (button 5)
26  goto line 28
27  highlighted_button = 7168 (button 7)
28  NOP
(как сделать жирный шрифт внутри CODE?)
Объяснить про 63, 64 и логику

При выборе аудио, нас выбрасывало в PGC 8:

Код:

1  R[5] = 99
2  R[1] = sub-picture
3  R[1] &= 63
4  R[0] = 1
5  if (R[1] == R[0]) sub-picture = 0 (track 0:OFF)
6  NOP
7  NOP
8  R[0] = 1
9  if (R[2] == R[0]) audio = 0 (track 0)
10  R[0] = 2
11  if (R[2] == R[0]) audio = 1 (track 1)
12  NOP
13  NOP
14  R[2] = 0
15  R[12] = audio
16  R[13] = sub-picture
17  Link PGC 7
после чего мы возвращались в меню установок, с одной из кнопок субтитров, услужливо выбранных для нас (в зависмости от текущего выбора).
Меняем на

Код:

1  R[5] = 99
2  NOP
3  NOP
4  NOP
5  NOP
6  NOP
7  NOP
8  R[0] = 1
9  if (R[2] == R[0]) audio = 0 (track 0)
10  R[0] = 2
11  if (R[2] == R[0]) audio = 1 (track 1)
12  R[0] = 3
13  if (R[2] == R[0]) audio = 2 (track 2)
14  NOP
15  NOP
16  R[2] = 0
17  R[12] = audio
18  R[13] = sub-picture
19  Link PGC 7
При выборе субтитров, нас выбрасывало в PGC 9:

Код:

1  R[5] = 100
2  R[0] = 5
3  if (R[2] != R[0]) goto line 13
4  goto line 9
5  NOP
6  NOP
7  NOP
8  NOP
9  R[0] = sub-picture
10  R[0] &= 63
11  if (R[0] == 1) R[0] = 0
12  sub-picture = R[0]
13  R[0] = 1
14  if (R[2] == R[0]) sub-picture = 64 (track 0:ON)
15  R[2] = 0
16  R[12] = audio
17  R[13] = sub-picture
18  R[11] = 0
19  Link PGC 1
Меняем на

Код:

1  R[5] = 100
2  R[0] = 5
3  if (R[2] != R[0]) goto line 13
4  goto line 9
5  NOP
6  NOP
7  NOP
8  NOP
9  R[0] = sub-picture
10  R[0] &= 63
11  if (R[0] == 1) R[0] = 0
12  sub-picture = R[0]
13  R[0] = 1
14  if (R[2] == R[0]) sub-picture = 64 (track 0:ON)
15  R[0] = 2
16  if (R[2] == R[0]) sub-picture = 65 (track 1:ON)
17  R[2] = 0
18  R[12]= audio
19  R[13]= sub-picture
20  R[11] = 0
21  Link PGC 1

_________________
Всё хорошо по-настоящему, когда у всех всё хорошо!!!
Мне хорошо тогда, когда тебе хорошо!
СкрытProfile PM
Показать сообщения:    
Ответить на тему

Текущее время: 05-Дек 03:55

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



 Сообщить о нарушении в теме 

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