Изменить стиль страницы

Глава 25

Воспроизведение фильма разными способами

Просмотр только определенных сцен фильма

Ранее уже рассматривались примеры фильмов, в которых использовались сцены. Однако недостаток предыдущих примеров заключался в том, что, попав в какую-либо из сцен, зритель мог вернуться в меню только после просмотра оставшейся части фильма, что иногда не очень удобно.

В этой главе будет рассмотрен вариант создания фильма, который можно просмотреть целиком либо просмотреть только одну из его сцен.

Следует использовать фильм из предыдущих примеров, который уже был разбит на сцены. Также потребуется два меню. Потребуется одно главное меню верхнего уровня, располагающееся в пространстве видеоменеджера, а второе меню будет корневым. Именно в нем будет осуществляться выбор сцен. Нужно восстановить пример с использованием меню PTT, для которого на этот раз не будет задаваться тип PTT. Должен получиться сценарий, внешний вид которого показан на рис. 25.1. В этом сценарии из главного меню зритель может просмотреть весь фильм целиком, а из корневого меню – только его фрагменты (сцены). Как уже говорилось ранее, недостаток такого способа заключается в том, что, попав в фильм, например, на второй сцене, зритель будет вынужден просмотреть фильм до конца, включая третью и четвертую сцены.

Профессиональный авторинг DVD i_355.png

Рис. 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.

Профессиональный авторинг DVD i_356.png

Рис. 25.2. Команды условного перехода на ячейках PGC.

Так как флаг Post PGC связан с главным меню, то при переходе на конец PGC автоматически произойдет возврат в это меню.

Этот пример надо протестировать. Можно увидеть, что команды перехода исправно выполняются при вызове тех или иных сцен из корневого меню, а в случае запуска фильма на воспроизведение из главного меню зритель просматривает фильм целиком.

Однако есть существенный недостаток такого способа просмотра фильма. Если создать видеофайлы DVD или образ диска, а затем проиграть его с помощью программного плеера или даже записать фильм на диск и запустить его на стационарном плеере, то можно заметить, что при проигрывании фильма целиком в местах стыков сцен наблюдается небольшая задержка в воспроизведении. Это связано с тем, что системе требуется некоторое время на обработку команды условного перехода. Программа Scenarist отображает такую прерывистость в воспроизведении установкой флага NSM для ячеек, как показано на рис. 25.3.

Профессиональный авторинг DVD i_357.png

Рис. 25.3. Флаги NSM у ячеек PGC.

Как же устранить такую ситуацию? Для этого следует воспользоваться свойством программы Scenarist, позволяющим создавать любое допустимое количество объектов сценария на основе зарегистрированных материалов, не увеличивая общий объем проекта. Иными словами, если зарегистрировать полуторачасовой видеофильм общим размером 4 Гбайт, то можно создать 10 титульных папок, и в каждую из них поместить фильм. При этом общий размер проекта не увеличится. Точнее, он увеличится крайне незначительно, только для того, чтобы учесть служебные объекты типа титульных папок.

Где же могут потребоваться такие задачи? Например, при создании DVD-диска с мультфильмами, которые можно посмотреть целиком или только по одному мультфильму. Если ваш ребенок хорошо себя вел, то он заслужил просмотр всего набора мультиков, а если он готовится ко сну, то вы можете включить ему только один мультфильм (ведь все знают, насколько трудно оторвать детей от экрана телевизора).

Итак, требуется создать четыре титульные папки, в каждую из которых будет помещено по одной сцене, как показано на рис. 25.4.

Профессиональный авторинг DVD i_358.png

Рис. 25.4. Сценарий с возможностью просмотра фильма целиком или частично.

Но зачем потребовалось создавать по одной титульной папке для каждой сцены? Если вызов отдельных сцен будет осуществляться из главного меню, то связи от главного меню могут быть протянуты только к титульным папкам, а не к какой-то конкретной программе PGC. Именно поэтому и были созданы четыре титульных папки. Если пользователь уверен в том, что вызовы сцен на просмотр осуществляются из корневого меню или из подменю, то можно создавать только одну дополнительную титульную папку для сцен и размещать в ней фильм. В этой папке можно соединять ячейки (флаги Cell) с меню, так как здесь не требуется непрерывное воспроизведение.

Теперь следует рассмотреть очень интересную возможность, предоставляемую спецификацией DVD. Она позволяет временно выходить в меню, например для просмотра какой-либо информации в разделе «Библиография», и потом возвращаться в то место фильма, откуда был осуществлен выход в меню.

Функция Resume

Одним из значений слова «resume» в английском языке является глагол «продолжить». Команда Resume применяется в командах условного перехода и для команд третьего типа в областях программных цепочек Pre, Post и Btns.

Следует рассмотреть пример, когда зритель из меню попадает в фильм, некоторое время просматривает его, а затем, нажимая клавишу Menu на пульте дистанционного управления, снова попадает в меню. После некоторой последовательности действий в меню зритель должен вернуться обратно к воспроизведению фильма, на то место, где оно было прервано.

Для этого будет использовано меню, изображенное на рис. 25.5. В нем присутствуют три кнопки. Одна кнопка запускает фильм на воспроизведение, вторая передает управление главному меню, а третья вызывает продолжение просмотра фильма с того момента, откуда произошел переход к меню.

Профессиональный авторинг DVD i_359.png

Рис. 25.5. Меню для обеспечения возврата в просматриваемый фильм.

Меню надо добавить в проект и сделать его корневым меню в сценарии. Затем следует добавить главное меню, сам фильм и расставить связи, как показано на рис. 25.6. Нужно провести связь от стартовой точки к главному меню, от главного меню – к корневому меню, а от корневого меню – к главному меню и к фильму. Также надо не забыть замкнуть ячейки меню на себя.

Профессиональный авторинг DVD i_360.png

Рис. 25.6. Сценарий фильма с меню возврата.

Теперь можно приступать к созданию функции возврата в то место фильма, откуда произошел переход в меню. Для этого нужно дважды щелкнуть на флаге Btns иконки Buttons корневого меню. Откроется окно моделирования на закладке Button Commands (Команды кнопок). На третьей кнопке с надписью «Возврат в фильм» пока нет никаких команд. Туда надо добавить команду Jump by Sub-Instructions или Type3 Command. Так как данная задача не слишком сложна, то команда третьего типа не нужна. Поэтому следует использовать команду условного перехода Jump by Sub-Instructions.