Текст книги "Профессиональный авторинг DVD"
Автор книги: Вячеслав Голиней
Жанр: Программы, Компьютеры
сообщить о неприемлемом содержимом
Текущая страница: 19 (всего у книги 20 страниц)
Прежде чем начинать работу по созданию сценария с использованием паролей, необходимо определиться, как следует защищать тот или иной фильм от несанкционированного доступа.
Пароли могут быть цифровыми или буквенными, нужно лишь предоставить зрителю возможность каким-либо образом ввести этот пароль. Не стоит использовать варианты многократного нажатия какой-либо клавиши на пульте дистанционного управления, так как зритель всегда может сбиться со счета. Лучше использовать цифровой пароль не очень большой длины.
Для обеспечения возможности ввода такого пароля необходимо предусмотреть среди кнопок меню цифры, которые зритель будет выбирать. Длину пароля следует выбирать не очень большой, так как управление переключением между кнопками с помощью пульта дистанционного управления тоже само по себе не самое быстрое занятие. Для примера стоит использовать пароль из трех цифр.
Для начала нужно будет потратить некоторое время на создание меню и subpicture. Внешний вид нашего меню приведен на рис. 24.17. Будет использоваться 10 кнопок с цифрами, одна кнопка для ввода пароля и одна кнопка возврата в корневое меню, откуда зритель переходил в это меню.
Рис. 24.17. Меню для ввода пароля.
Дополнительно на нашем меню изображена subpicture, которая будет отображаться при неправильном вводе пароля. Если пароль был введен правильно, то на экране будет отображаться другая subpicture и кнопка перехода к просмотру фильма, как показано на рис. 24.18.
Рис. 24.18. Индикация правильного ввода пароля.
Для реализации такого меню нужно использовать потоки ракурсов. Можно было бы обойтись только потоками subpicture, но хотелось бы отображать на экране объемную надпись «Смотреть фильм», а не просто слово того или иного цвета. Создать пример такого же меню, но с фотоизображениями будет уже несколько проще.
Итак, необходимо создать два изображения, которые будут играть роль фонового слоя в меню. Одно такое изображение показано на рис. 24.17, а другое – на рис. 24.18. Следует обратить особое внимание на то, чтобы фразы «Меню с паролем» и «Обратно в корневое меню» имели одинаковые координаты в обеих картинках. Иначе при переключении с ракурса на ракурс зритель будет видеть резкие перемещения слов. На самом деле надо будет создать три изображения. Стартовое изображение не будет иметь надписи «Неверный пароль!!!» и отображаться оно будет только при первом входе в меню.
Известно, что ракурсы могут добавляться только к видеодорожкам, поэтому надо сделать меню анимированным, хотя, конечно, никакой реальной анимации там не будет. Для этого следует поместить фоновые изображения в видеоредактор и сделать видеоклипы малой длительности, например по три секунды. Это необходимо еще и для того, чтобы при вводе правильного пароля зритель смотрел три секунды на экран, где будет отображено подтверждение, а потом управление передавалось бы в специальный фильм. Можно даже добавить какое-либо звуковое сопровождение к этим клипам. Например, для клипа с предложением ввести пароль можно записать свой собственный голос с фразой «Для просмотра данного видеофильма вам потребуется ввести пароль из трех цифр», а для клипа с надписью «Неверный пароль!!!» можно даже добавить какие-нибудь грубости или смех «Ха! Ха! Ха! Неправильный пароль!», как в фильме «Парк Юрского периода». Но следует помнить, что длительность всех трех фильмов должна быть одинаковой.
Также потребуется сделать subpicture, в которых будут отображены выделения для всех кнопок.
Все материалы надо ввести в состав проекта и зарегистрировать их. Далее самый первый видеоклип с предложением ввести пароль надо поместить на папку монтажного редактора Tracks. В результате будет создана видеодорожка. К ней надо добавить два ракурса при помощи команды меню New ► Angle (Новый ► Ракурс) или при помощи кнопки New Angle (Новый ракурс) на панели инструментов.
На первый поток ракурсов из менеджера исходных материалов следует переместить второй видеоклип с уведомлением о неверном вводе пароля. На второй поток ракурсов перемещается видеоклип с подтверждением правильности пароля и предложением воспроизвести фильм. Затем нужно переместить на видеодорожку subpicture и задать для нее подсветку кнопок, а также расставить связи между ними.
Видеодорожка будет выглядеть так, как показано на рис. 24.19.
Рис. 24.19. Видеодорожка с двумя ракурсами и потоком subpicture.
Также надо создать подсветки кнопок и расставить между ними связи.
Требуется создать горизонтальные связи между подсветками кнопок, соответствующим цифрам, а вертикальную связь от всех горизонтальных подсветок провести к самой нижней кнопке. От подсветки нижней кнопки связь вверх проводится к кнопке 0. Вид созданных подсветок отображен на рис. 24.20.
Рис. 24.20. Подсветки кнопок и их связи.
Можно промоделировать и созданные подсветки кнопок, но следует помнить, что программа Scenarist промоделирует только первый видеопоток, который не сможет отобразить ракурсы. Чтобы промоделировать работу остальных потоков ракурсов, необходимо создавать сценарий с использованием определенных элементов программирования.
Сначала нужно перейти в редактор сценариев и переместить из окна менеджера исходных материалов видеодорожку на папку языка, полагая, что корневое меню там уже создано. При этом ничего не произойдет, за исключением того, что программа Scenarist в информационном окне выдаст сообщение об ошибке Error: Multi angle can only exist within a Title (Меню с ракурсами может существовать только в титульных папках).
В принципе, неважно, где размещать меню. Нужно только, чтобы скрытый видеофильм находился в том же пространстве VTS, что и титульная папка с меню. Поэтому нужно создать титульную папку и поместить в нее меню. Внешний вид сценария после добавления меню приведен на рис. 24.21. У созданной PGC имеются три ячейки, в каждой из которых находится свой собственный видеопоток.
Рис. 24.21. PGC созданного меню.
Также нужно создать связь от корневого меню к меню и две обратные связи от меню к корневому меню. Для проверки собственных действий стоит записывать номера кнопок, чтобы при создании связей проверять, на ту ли кнопку была «повешена» связь.
Теперь придется немного заняться программированием. Будет использоваться пароль 761. Правила ввода пароля изложены в следующем списке:
• зритель должен ввести пароль, последовательно активируя кнопки с цифрами;
• если зритель между двумя правильными кнопками выберет неверную кнопку, то система должна сбрасываться в начальное состояние;
• если после активирования последней кнопки пароля зритель активирует какую-либо еще кнопку, то система также должна сбрасываться в начальное состояние;
• если зритель нажимает кнопку Ввод, то система проверяет правильность ввода пароля. Если пароль неверен, то система должна включить ракурс 1 и снова ожидать указаний зрителя. Если пароль был введен верно, то система должна включить ракурс 2 и по окончании проигрывания этого ракурса перейти к воспроизведению специального фильма;
• после перехода из меню куда-либо еще система должна сбросить все установки в начальное состояние;
• система должна начинать отсчет правильных действий зрителя с нажатия кнопки меню с цифрой 7. Для учета правильных действий потребуется создать некое подобие счетчика. Так как в пароле используется три цифры, то придется увеличивать показания счетчика три раза. В качестве счетчика стоит использовать регистр GPRM2. В самом начале работы в этом регистре должно быть нулевое значение.
Алгоритм проверки правильности ввода пароля приведен на рис. 24.22. Для его реализации придется использовать дополнительные суррогатные PGC.
Рис. 24.22. Алгоритм ввода пароля.
Нажатие зрителя на любую кнопку, отличную от 7, 6 или 1, приводит к занесению в регистр GPRM2 нулевого значения.
Нажатие зрителя на кнопку 7 после любой комбинации нажатия кнопок меню приводит к занесению в регистр GPRM2 значения 9.
Если зритель сразу после этого нажал на кнопку 6, то система сравнит содержимое регистра GPRM2 с 9 и, если они равны, добавит к значению GPRM2 число 7. При этом в регистре будет храниться уже число 16. Если они не равны, то система занесет в GPRM2 нулевое значение.
Если сразу после этого зритель нажмет кнопку 1, то система сравнит содержимое регистра GPRM2 с 16 и, если они равны, добавит к значению GPRM2 число 3, так что в регистре будет храниться уже число 19. Если они не равны, то система занесет в GPRM2 нулевое значение.
И наконец, если сразу после этого зритель нажмет кнопку Ввод, то система сравнит содержимое регистра GPRM2 с числом 19. В этом случае система считает, что пароль введен правильно и переключается на ракурс 3. Если же значения не равны, то система считает, что пароль введен неправильно, и переключается на ракурс 2.
Сначала надо задать команды обнуления GPRM2 при нажатии на кнопки 0, 2, 3, 4, 5, 8 и 9. Для этого следует дважды щелкнуть на флаге Btns, после чего откроется окно моделирования на закладке Button Commands (Команды кнопок). При этом будет показан список команд для всех кнопок нашего меню. Все они будут иметь значение Nop (Not operation). Необходимые команды следует задать.
Также надо создать две PGC, выполняющие роль пустых болванок. Потребуется найти самый короткий видеофрагмент, зарегистрировать его в программе Scenarist, создать дорожки, после чего переместить их на титульную папку.
Они не будут воспроизводиться никогда, так как на них будут навешены Pre-команды, которые выполняются всегда до момента выполнения самой PGC. Внешний вид сценария с дополнительными PGC приведен на рис. 24.23.
Рис. 24.23. Сценарий фильма с доступом по паролю.
Следует предусмотреть и регистр GPRM для хранения информации о номере отображаемого ракурса. Для этого будет выделен регистр GPRM5. Также надо задать команду присвоения этому регистру единичного значения (первый ракурс) в предваряющей PGC. Надо присвоить ей флаг Entry, так как она должна выполняться первой в титульной папке. Затем нужно задать команды обнуления регистра GPRM2 и команду перехода к PGC нашего меню, как показано на рис. 24.24.
Рис. 24.24. Pre-команды трех PGC.
В качестве Pre-команд PGC меню задается указание номера воспроизводимого ракурса.
В качестве Pre-команд последующей суррогатной PGC, функции которой может выполнять тот же материал, который использован для первой суррогатной PGC, задается проверка регистра GPRM2 на равенство с значением 19 и, если условие выполняется, то в регистр GPRM5 заносится значение 3, которое указывает номер ракурса, который должен отображаться при правильном вводе пароля. Если условие не выполняется, то в регистр заносится значение 2, соответствующее ракурсу, содержащему фразу «Неверный пароль!!!», после чего осуществляется переход на PGC меню.
На кнопку, соответствующую цифре 7, навешивается команда занесения в регистр GPRM2 значения 9, которое уже должно быть занесено в регистр GPRM3. На кнопку, соответствующую цифре 6, навешивается команда сравнения регистра GPRM2 со значением 9. Если условие верно, то в регистр GPRM2 заносится число 16. Ту же команду надо использовать и для кнопки, соответствующей в меню цифре 1.
Также надо зациклить все ячейки меню, кроме последней, на блок Cell Block, как показано на рис. 24.25. От последней ячейки нужно провести связь к фильму.
Рис. 24.25. Команды кнопок PGC меню.
Осталось лишь протестировать пример. На самом деле программа Scenarist предоставляет немало возможностей создания меню с вводом пароля. В этом разделе был рассмотрен только один из вариантов.
Итак, вы увидели, сколь многообразно может быть использование меню в сценариях DVD-дисков и насколько сложными могут быть многоуровневые меню.
Глава 25
Воспроизведение фильма разными способами
Просмотр только определенных сцен фильмаРанее уже рассматривались примеры фильмов, в которых использовались сцены. Однако недостаток предыдущих примеров заключался в том, что, попав в какую-либо из сцен, зритель мог вернуться в меню только после просмотра оставшейся части фильма, что иногда не очень удобно.
В этой главе будет рассмотрен вариант создания фильма, который можно просмотреть целиком либо просмотреть только одну из его сцен.
Следует использовать фильм из предыдущих примеров, который уже был разбит на сцены. Также потребуется два меню. Потребуется одно главное меню верхнего уровня, располагающееся в пространстве видеоменеджера, а второе меню будет корневым. Именно в нем будет осуществляться выбор сцен. Нужно восстановить пример с использованием меню PTT, для которого на этот раз не будет задаваться тип PTT. Должен получиться сценарий, внешний вид которого показан на рис. 25.1. В этом сценарии из главного меню зритель может просмотреть весь фильм целиком, а из корневого меню – только его фрагменты (сцены). Как уже говорилось ранее, недостаток такого способа заключается в том, что, попав в фильм, например, на второй сцене, зритель будет вынужден просмотреть фильм до конца, включая третью и четвертую сцены.
Рис. 25.1. Сценарий с фильмом, разбитым на сцены.
Попробуем исправить этот недостаток.
Сначала снова придется заняться программированием. Следует учитывать состояние фильма в регистре GPRM0 и, в зависимости от значения в этом регистре, переходить от ячейки каждой воспроизводимой сцены либо в меню, либо к следующей ячейке.
Изначально в регистрах GPRM хранятся нулевые значения, но потребуется добавить команду Pre в PGC главного (титульного) меню, которая будет заносить в регистр GPRM0 значение 1, которое будет свидетельствовать, что зритель смотрит фильм целиком.
В PGC корневого меню надо добавить команду Pre, в которой значение 2 будет заноситься в регистр GPRM0, что будет соответствовать просмотру только выбранной сцены.
Также потребуется создать связь флага Post PGC фильма с главным меню. Помимо этого надо добавить команды к ячейкам PGC фильма. Естественно, команды, которые будут добавлены к ячейкам, будут командами условного перехода. Если регистр GPRM0 будет содержать значение 2, то команда перехода должна выполняться. В противном случае никакая команда в ячейке не выполняется. Такие команды надо добавлять с переходом по команде Post Command of Current PGC, то есть на флаг Post PGC фильма. Внешний вид заданных команд приведен на рис. 25.2.
Рис. 25.2. Команды условного перехода на ячейках PGC.
Так как флаг Post PGC связан с главным меню, то при переходе на конец PGC автоматически произойдет возврат в это меню.
Этот пример надо протестировать. Можно увидеть, что команды перехода исправно выполняются при вызове тех или иных сцен из корневого меню, а в случае запуска фильма на воспроизведение из главного меню зритель просматривает фильм целиком.
Однако есть существенный недостаток такого способа просмотра фильма. Если создать видеофайлы DVD или образ диска, а затем проиграть его с помощью программного плеера или даже записать фильм на диск и запустить его на стационарном плеере, то можно заметить, что при проигрывании фильма целиком в местах стыков сцен наблюдается небольшая задержка в воспроизведении. Это связано с тем, что системе требуется некоторое время на обработку команды условного перехода. Программа Scenarist отображает такую прерывистость в воспроизведении установкой флага NSM для ячеек, как показано на рис. 25.3.
Рис. 25.3. Флаги NSM у ячеек PGC.
Как же устранить такую ситуацию? Для этого следует воспользоваться свойством программы Scenarist, позволяющим создавать любое допустимое количество объектов сценария на основе зарегистрированных материалов, не увеличивая общий объем проекта. Иными словами, если зарегистрировать полуторачасовой видеофильм общим размером 4 Гбайт, то можно создать 10 титульных папок, и в каждую из них поместить фильм. При этом общий размер проекта не увеличится. Точнее, он увеличится крайне незначительно, только для того, чтобы учесть служебные объекты типа титульных папок.
Где же могут потребоваться такие задачи? Например, при создании DVD-диска с мультфильмами, которые можно посмотреть целиком или только по одному мультфильму. Если ваш ребенок хорошо себя вел, то он заслужил просмотр всего набора мультиков, а если он готовится ко сну, то вы можете включить ему только один мультфильм (ведь все знают, насколько трудно оторвать детей от экрана телевизора).
Итак, требуется создать четыре титульные папки, в каждую из которых будет помещено по одной сцене, как показано на рис. 25.4.
Рис. 25.4. Сценарий с возможностью просмотра фильма целиком или частично.
Но зачем потребовалось создавать по одной титульной папке для каждой сцены? Если вызов отдельных сцен будет осуществляться из главного меню, то связи от главного меню могут быть протянуты только к титульным папкам, а не к какой-то конкретной программе PGC. Именно поэтому и были созданы четыре титульных папки. Если пользователь уверен в том, что вызовы сцен на просмотр осуществляются из корневого меню или из подменю, то можно создавать только одну дополнительную титульную папку для сцен и размещать в ней фильм. В этой папке можно соединять ячейки (флаги Cell) с меню, так как здесь не требуется непрерывное воспроизведение.
Теперь следует рассмотреть очень интересную возможность, предоставляемую спецификацией DVD. Она позволяет временно выходить в меню, например для просмотра какой-либо информации в разделе «Библиография», и потом возвращаться в то место фильма, откуда был осуществлен выход в меню.
Функция ResumeОдним из значений слова «resume» в английском языке является глагол «продолжить». Команда Resume применяется в командах условного перехода и для команд третьего типа в областях программных цепочек Pre, Post и Btns.
Следует рассмотреть пример, когда зритель из меню попадает в фильм, некоторое время просматривает его, а затем, нажимая клавишу Menu на пульте дистанционного управления, снова попадает в меню. После некоторой последовательности действий в меню зритель должен вернуться обратно к воспроизведению фильма, на то место, где оно было прервано.
Для этого будет использовано меню, изображенное на рис. 25.5. В нем присутствуют три кнопки. Одна кнопка запускает фильм на воспроизведение, вторая передает управление главному меню, а третья вызывает продолжение просмотра фильма с того момента, откуда произошел переход к меню.
Рис. 25.5. Меню для обеспечения возврата в просматриваемый фильм.
Меню надо добавить в проект и сделать его корневым меню в сценарии. Затем следует добавить главное меню, сам фильм и расставить связи, как показано на рис. 25.6. Нужно провести связь от стартовой точки к главному меню, от главного меню – к корневому меню, а от корневого меню – к главному меню и к фильму. Также надо не забыть замкнуть ячейки меню на себя.
Рис. 25.6. Сценарий фильма с меню возврата.
Теперь можно приступать к созданию функции возврата в то место фильма, откуда произошел переход в меню. Для этого нужно дважды щелкнуть на флаге Btns иконки Buttons корневого меню. Откроется окно моделирования на закладке Button Commands (Команды кнопок). На третьей кнопке с надписью «Возврат в фильм» пока нет никаких команд. Туда надо добавить команду Jump by Sub-Instructions или Type3 Command. Так как данная задача не слишком сложна, то команда третьего типа не нужна. Поэтому следует использовать команду условного перехода Jump by Sub-Instructions.
Эту команду надо установить на третью кнопку меню, а в появившейся секции Jump to (Переход) выбрать команду Resume, которая установлена по умолчанию. При выполнении этой команды зритель перейдет к тому месту фильма, откуда он переходил к меню.
Если теперь протестировать сценарий с помощью окна моделирования, то можно увидеть, что при нажатии кнопки «Возврат в фильм» производится возврат в самое начало фильма. По всей видимости, это ошибка окна моделирования программы Scenarist, связанная с отсутствием аппаратных средств моделирования. Если создать видеофайлы DVD или образ диска, а затем протестировать пример на программном плеере, то можно увидеть, что все работает так, как надо, и возврат в воспроизведение фильма производится корректно.
Теперь надо устранить небольшой недостаток сценария. Дело в том, что информация для выполнения команды Resume появляется только после начала воспроизведения фильма. Если нажать эту кнопку до запуска фильма, то в информационном окне появится надпись Info: Cannot find Resume information (Невозможно найти информацию для команды Resume). Следовательно, надо как-то узнать, что зритель вошел в режим просмотра фильма и только в этом случае исполнять такую команду. Если команда вызвана до просмотра или даже после окончания просмотра фильма, то нужно эту команду обойти и не выполнять.
Для этого также придется использовать регистры GPRM.
Применяться будет в данной задаче GPRM0. Изначально во всех регистрах GPRM записано нулевое значение. Поэтому, когда производится запуск фильма, в этот регистр надо занести единичное значение. Когда фильм будет просмотрен до конца и произойдет возврат в меню, в регистр надо занести нулевое значение.
Для этого надо задать Pre-команду Set to GPRM в PGC нашего фильма, которая установит единичное значение регистра GPRM0. Точно так же надо задать Post-команду Set to GPRM, где будет установлено нулевое значение регистра GPRM0.
Теперь осталось откорректировать команду кнопки возврата. На рис. 25.7 показана структура исправленной команды. Надо просто установить флажок Compare (Сравнить) и в секции Compare задать операцию сравнения. Если значение регистра GPRM0 равно 1, то команда выполняется. Если нет, то команда игнорируется.
Рис. 25.7. Видоизмененная команда продолжения просмотра фильма.
Снова нужно создать видеофайлы DVD и протестировать пример с помощью программного плеера. На этот раз все работает без проблем.
Следует заметить, что информация для команды Resume всегда получается при воспроизведении того или иного материала пространства VTS. Сколько бы анимированных меню ни использовалось в папках языка, это не влияет на точку продолжения воспроизведения. Зритель может сколь угодно долго перемещаться в пределах меню, но при нажатии на кнопку возврата он всегда вернется к тому моменту, на котором было прервано воспроизведение. Главное, чтобы при этом зритель не попал в какое-либо подменю в титульной папке, так как именно в этот момент система меняет информацию для команды Resume.
Следует также сказать, что переходы к меню при помощи нажатия клавиш Title (To p) или Menu на пульте дистанционного управления не приводят к исполнению команд Post.
Правообладателям!
Это произведение, предположительно, находится в статусе 'public domain'. Если это не так и размещение материала нарушает чьи-либо права, то сообщите нам об этом.