Blu-Disc Studio: Создаём меню на Java. часть I

Из-за специфики interactive mode перестает показываться текущее время на дисплее плеера, поэтому я решил сделать в плейлисте попап в уголке с текущим временем. При открытии этого попап я делаю MA -> …/[set]:GPR[50]=1, а при закрытии close popup/[set]:GPR[50]=0. На основе этого сделал UDF:

public void UDF_Time_Songs_2() {
boolean canExec = true;
if (canExec && (manager.getGPR(50)==1)) {
canExec = false;
manager.activateButtonEx(“H:РM_Time_Songs.Handler”, “Time”, false);
manager.activateSegment(“S:РM_Time_Songs.show_menu”);
manager.setText(“F:РM_Time_Songs.Time.Normal”, manager.time2str(manager.getMediaTime()));
}

и когда перехожу из меню только, у меня в MA переход на чаптер + этот UDF. В скрипте это выглядит так:

  manager.allowSaveState(true);
  manager.setStartPlayMark(#2);
  manager.activateSegment("S:РL_Playlist_Songs.play_movie");
  manager.UDF_Time_Songs_2();

То есть у меня в общем получается два activateSegment, а я уяснил что этого не должно быть. Как можно сделать чтобы не было двух activateSegment.

S:РM_Time_Songs.show_menu:
S - сегмент
PM - попап меню
Time_Songs - название попап меню
show_menu - меню висит на экране (вместо этого могут быть animate… если это входные анимации)

S:РL_Playlist_Songs.play_movie:
S - сегмент
PL - плейлист
Playlist_Songs - название плейлиста
play_movie - сегмент запуска муви на проигрывание

Убрать “manager.activateSegment(“S:РL_Playlist_Songs.play_movie”);” нельзя - муви не запустится.

Зачем GPR в данном случае? В нем содержится флаг показывать или нет таймер?

А если открыть попап меню (где настройки, выбор сцен и прочее) - таймер пропадает?

Можно вместо
manager.activateSegment(“S:РL_Playlist_Songs.play_movie”);
вставить


if (manager.getGPR(50)==1) {
  manager.playVideo('Playlist Songs');
} else {
  manager.activateSegment("S:РL_Playlist_Songs.play_movie");
}

Но там могут еще вылезти подводные косяки…

Либо выкидываем UDF и забываем про GPR.
Основным попапом для “Playlist Songs” прописываем “Time Songs”, ставим флаг “Auto show popup”. В “Action Every Second” прописываем обновление таймера.
В попап меню “Time Songs” в поле “Popup menu” прописываем переход на наше обычное корневое попап меню.
Во всех остальных попап меню вместо команды [close popup] прописывеем переход на “Time Songs”.
Там где идет переключение показ/скрытие таймера - просто сдвигаем наш таймер за пределы экрана или назад на экран.
Т.е. когда основные попап меню закрыты - у нас на экране всегда есть таймер, но если пользователь не хочет его видеть, то он просто за пределами экрана.

То есть вместо

  [b]manager.allowSaveState(true);
  manager.setStartPlayMark(#6);
  manager.activateSegment("S:РL_Playlist_Songs.play_movie");
  manager.UDF_Time_Songs_2();[/b]

можно сделать

  [b]manager.allowSaveState(true);
  manager.setStartPlayMark(#6);
  manager.playVideo('Playlist Songs');
  manager.UDF_Time_Songs_2();[/b]

Я правильно понял? И какие косяки Вы имеете в виду?
А вообще я сделал не так как Вы предлагаете. У меня UDF при всех закрытиях попап в этом плейлисте такой, то есть в inactivity action и popup menu:

public void UDF_Time_Songs() {
boolean canExec = true;
manager.resetTicks();
if (canExec && (manager.getGPR(50)==0)) {
canExec = false;
manager.Close_Popup();
}
if (canExec && (manager.getGPR(50)==1)) {
canExec = false;
manager.activateButtonEx(“H:РM_Time_Songs.Handler”, “Time”, false);
manager.activateSegment(“S:РM_Time_Songs.show_menu”);
manager.setText(“F:РM_Time_Songs.Time.Normal”, manager.time2str(manager.getMediaTime()));
}
}
То есть и при переходе в этот плейлист на чаптер или резюм я добавляю этот UDF.
В popup menu попап Time Songs стоит корневое попап.

Вы главное о возможных косяках расскажите пожалуйста. Забыл сказать что попап Time Songs открывается кнопкой вверх на пульте, а закрывается кнопкой вниз.

Извините за нубский вопрос, может кто разъяснит, а что это за резюм такой который запускается по заданному параметру?
Всё время считал что резюм это откуда ушли то от туда потом и продолжаем, если ушли из фильма допустим в главное меню
или на просмотр допов то по возврату в фильм продолжаем просмотр с того места где остановились, это и есть резюм фильма,
если выключили плеер, то при включении его естественно нам предлагают продолжить от туда где остановился диск, а это
уже есть резюм диска. А это что за резюм такой диковинный, который будет запускаться по заранее заданному параметру?
Вы меня конечно извините, я может чего то не понимаю, но это не резюм, это что не понятное, это что то другое.

@AlexsisIv, Просто при проигрывании муви до конца и переходе в меню, резюм этого муви начинается с первого чаптера, а мне надо со второго. Я сделал плейлист муви только с песнями и все остальное пропускается. Для этого сделал свои чаптеры в плейлисте с переходами на нужный чаптер. То есть по окончании песни у меня переход на начало следующей.

да

Возможно где-то еще придется так же заменять команду “manager.activateSegment(“S:РL_Playlist_Songs.play_movie”)” или подобную.
S:…play_movie делает 2 вещи:

  1. запускает муви командой manager.playVideo(‘…’);
  2. активирует сегмент S:Movie - это пустой сегмент, обрабатывающий команды (нажатие кнопок) при проигрывании муви.

Если дать команду резюм когда видео проиграно до конца или если мы принудительно очистили время резюма, то резюм просто запустит муви с начала. Это сделано что бы можно было на “Play” просто поставить резюм и не мучиться. maks8881 нужно чтобы запускался не с начала, а со второго чаптера.

У меня два меню/попап set up, в одном настройки муви (группа Movie), в другом плейлиста песен и бонусов разом (06 и 05 группы). У меня при выжоде из бонусов (05) в муви и меню стоит switch:

if SubtitleTrack(бонус 1 (05 группа)=1 -> Set sub: Group 06 [1]
if SubtitleTrack(бонус 1 (05 группа)=2 -> Set sub: Group 06 [2]
if SubtitleTrack(бонус 1 (05 группа)=0 -> Set sub: Group 06 [off]

после переключения субтитров в бонусе кнопкой пульта и при заходе в муви/меню 1ый и 2ой субтитр правильно показывается и переключается, а отключенный субтитр игнорируется почему то и показывается/переключается при этом всегда первый. Подскажите пожалуйста, что я делаю не так. :smile_bn:

И еще, подскажите пожалуйста чем отличается в switch custom - int SubtitleTrack(Movie) от int Subtitle(Movie)?

Там, скорее всего, продолжение предыдущей ошибки. В выходные посмотрю.

Честно говоря не могу повторить ошибку - пришлите проект (BDMD + графика).

Когда субтитры выключены, то все-равно одна из дорожек остается активной. Т.е. физически есть активная субтитровая дорожка и есть флаг - включены/выключены.
Т.е. можно выключить субтитры и оставить активной, например, вторую дорожку. Используется это для Forced-субтитров. Когда субтитры выключены, то Forced субтитры все-равно отображаются.

Если субтитры выключены и активная дорожка 2 (например), то

  1. Subtitle(…) вернет 0
  2. SubtitleTrack(…) вернет 2

@CDK, Тогда вопрос на будущее. К примеру у меня двое Full и двое Forced субтитров на русском и английском к примеру, в каком порядке они должны располагаться чтобы когда выключены субтитры, то чтобы отображались Forced на нужном языке, и на каких дорожках должны быть флаги SubtitleTrack(…)? Напишите пример пожалуйста. :slight_smile:

P.S. У меня проект до недавнего времени открывался минут 10. Сделал дополнительное копирование объектов из меню в попап и стал открываться 25 минут. Можно как то оптимизировать проект?

Нет никаких флагов SubtitleTrack - это функция которая возвращает номер дорожки. Флаг Forced - это в стандарте блюрея. У каждого субтитра в bdn.xml есть флаг forced. Если он true, то субтитр будет отображаться, даже если субтитры отключены.
Где располагать конкретные дорожки - значения не имеет.

Ускорить уже нельзя. Только если проект делать по другому, маскимально исключая дублирование.

У меня два меню/попап для настроек аудио/субтитров, каждый для своей группы, и в них простые команды на Enter - set.audio:группа[номер]. Когда переключаю в попап, аудио для другой группы, не для той которая проигрывается в данный момент, то переключается и в проигрываемом муви, и наоборот, если в попап проигрываемого муви переключаю, то переключается и в попап для другой группы. Когда переключаю кнопкой пульта, то в настройках другой группы не переключается. В чем проблема не пойму,

С Наступающим Новым Годом всех!!!

А точно не перепутаны переходы между меню? Нет такого, что после копирования где-то возврат из подменю идет в меню предназначенное для другого муви?

Потому как у меня не повторяется. Пришлите проект - посмотрю.

Я не совсем понял. Где устанавливать этот switch, в меню/попап настроек субтитров на кнопке в Enter?

Да

@CDK, Вообще ничего не получается со switch, он не работает :smile_bn:, и current кнопка не отображается в настройках сабов, и в этой теме не работает совет на счет Сценариста. :smile_bn: Вообще ничего не получается. :smile_bm:

Честно говоря я не совсем понимаю что Вы пытаетесть сделать и что не работает. Распишите, пожалуйста, подробно.

@CDK, У меня Forced субтитры 3-ьи в плейлистах - Playlist Songs и Playlist Favorites. В Bonus 1 и Bonus 2 третьих субтитров нет. Все эти видео входят в группу 06. Сделал switch:
if [SubtitleTrack(‘Playlist Songs’)=0&SubtitleTrack(‘Playlist Favorites’)=0&SubtitleTrack(‘Bonus 1’)=0&SubtitleTrack(‘Bonus 2’)=0 -> Set sub: Group 06 [off]
потом преобразовал в скрипт и заменил нули в Playlist Songs и Playlist Favorites, которые в switch в группе 06 на 3. Так ведь можно?, и вообще со switch я правильно сделал?
И у меня при выключении сабов кнопкой пульта не отображаются Forced субтитры. Ну то что не отображается Current кнопка это понятно, у меня в Highlight стоит нулевой субтитр. Ну как то так.

Что должно это условие проверять? Что за условие?

Друзья, тема закрыта в связи с достижением максимального количества страниц.
Дальнейшее обсуждение и общение продолжаем в следующей части темы - Blu-Disc Studio: Создаём меню на Java. часть II

1 лайк