Профессиональный авторинг DVD
Шрифт:
Рис. 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.