Вы меня не поняли, я имел в виду что текст будет всегда один и будет привязан к маркеру, который указывает на закладку, и у меня есть мысли теоретические как это сделать.
А то что я выделил - это что? И можно ли это сделать в switch?
Вы меня не поняли, я имел в виду что текст будет всегда один и будет привязан к маркеру, который указывает на закладку, и у меня есть мысли теоретические как это сделать.
А то что я выделил - это что? И можно ли это сделать в switch?
Слева это часть времени в наносекундах (полное время включает и нули). Это время плеймарка (чаптера).
Справа - это комментарий с соответствующим PTS - время во внутренних единицах видеопотока. 1 секунда = 90000 PTS.
Нет.
…
if (time < 6036420800000L) return 23; // 543314772
if (time < 6128412700000L) return 24; // 551594043
if (time < 6204989200000L) return 25; // 558485928
return 26;
}
Подсчитал, с незначительными изменениями после 4ой цифры, то что слева, совпадает с тем что выдает MediaInfo после мукса в Сценаристе,
01:37:06.053 : Chapter 23
01:40:36.830 : Chapter 24
01:42:08.822 : Chapter 25
01:43:25.399 : Chapter 26
с изменениями после 3ей цифры совпадает с тем что на плеймарках в Scenes.
01:37:00:07
01:40:30:24
01:42:02:21
01:43:19:06
У меня видео интерлейс 29,97 поэтому так сильней разнится на последних плеймарках.
Сделайте пожалуйста.
@CDK,
Скажите пожалуйста, как например это
if (time < 6204989200000L) return 25; // 558485928
правильно привязать к GPR?
Хочу попробовать при добавлении закладки, привязывать закладку к GPR, в зависимости от чаптера, а потом с помощью нужного GPR вызывать нужный текст с песней. Или это будет тоже самое что Вы порекомендовали? В любом случае мне с GPR удобнее будет работать, в смысле привязывать к GPR Move to для текста и нужный текст для песни в switch. Все это только теоретические мысли и когда дойдет до практики я скорее всего окончательно запутаюсь и не буду знать что делать.
В смысле “привязать к GPR”?
Строка “if (time < 6204989200000L) return 25; // 558485928” возвращает 25 если время менее чем указанное в миллисекундах. Вы хотите записывать это в GPR? Зачем?
А простыми словами что это значит?
Я обратно стал тупым, как в начале освоения избранного.
Ну вот даже не знаю как это объяснить простыми словами
Это программирование Тут нет понятия привязок или какой-то магии. Функция возвращает значение, а что Вы с этим значение будете делать - это уже Ваше дело.
Нельзя что-то привязать к GPR. Можно при каких-то событиях (нажатие кнопки, окончание видео, каждую секунду и т.п.) выполнять какие-то действия в лоб или проверять условия и выполнять что-то в зависимости от условия.
Подскажите пожалуйста как вставить сюда -> if (time < 100510000000L) return “Song 1”; // 9082800 правильно Text и Move to. Нужно две строки создавать?:
if (time < 100510000000L) return setText(“F:MM_MENU_BOOKMARKS.Text_songs”, “Song 1”); // 9082800
if (time < 100510000000L) return moveToXY(“F:MM_MENU_BOOKMARKS.Text_songs”, 200, 200); // 9082800
Поправьте меня пожалуйста если нужны какие то знаки препинания и если что не так.
А вообще if (time < 100510000000L) return “Song 1”; // 9082800 работать в меню или плейлисте то будет?
return - это возврат из функции. Он выполняется один раз за вызов функции. И возвращает он при этом значение указанного в описании функции типа.
Из UDF вы можете GetChapterNumberByTime вызывать в лоб (без префикса manager.). Если номер букмарка в bookmarkNumber, то как-то так:
long time = getBookmarkTime('CONCERT', bookmarkNumber);
int chapter = GetChapterNumberByTime('CONCERT', time);
if (chapter == 1) {
setText("F:MM_MENU_BOOKMARKS.Text_songs", "Song 1");
moveToXY("F:MM_MENU_BOOKMARKS.Text_songs", 200, 200);
}
if (chapter == 2) {
setText("F:MM_MENU_BOOKMARKS.Text_songs", "Song 2");
moveToXY("F:MM_MENU_BOOKMARKS.Text_songs", 300, 300);
}
....
Скажите пожалуйста, что значит bookmark в manager.getBookmarkTime(‘CONCERT’, bookmark)?
manager.getBookmarkTime(‘CONCERT’, bookmark) это что то сродни time = manager.currentBookmarkTime(‘CONCERT’);?
Как я понимаю вместо time нужно время чаптера вписывать. А в чем его вписывать? Отсюда?:
if (time < 83006666667L) return 1; // 7507500
if (time < 322279033333L) return 2; // 29042013
if (time < 612435566667L) return 3; // 55156101
if (time < 909799300000L) return 4; // 81918837
if (time < 1153976566667L) return 5; // 103894791
if (time < 1450939900000L) return 6; // 130621491
нет, time - это переменная, которая определена строкой выше
long time = getBookmarkTime(‘CONCERT’, bookmarkNumber); <— получаем время букмарка для плейлиста ‘CONCERT’ по номеру букмарка, который хранится в bookmarkNumber и записываем в переменную time
int chapter = GetChapterNumberByTime(‘CONCERT’, time); <— получаем номер чаптера для плейлиста ‘CONCERT’ по времени из переменной time и записываем в переменную chapter
@CDK,
Ну если ничего менять не надо, тогда почему возникает ошибка при компиляции Jar?:
MediaManagement.java:169: cannot find symbol
symbol : variable bookmarkNumber
location: class com.disc_art_authoring.bdjmenu.MediaManagement
long time = getBookmarkTime(4, bookmarkNumber);
[u][1]
1 error
Указатель внизу указывает на первую букву в bookmarkNumber
/u ↩︎
потому что bookmarkNumber вы должны задать - это номер букмарка, для которого вы хотите что-то сделать (вывести текст, сместить маркер)
логичнее это сделать как параметр UDF, но можно все это сразу засунуть в одну UDF без параметров:
public void UDF_bookmarks() {
int count = getBookmarksCount('CONCERT');
for (int bookmarkNumber = 0; bookmarkNumber < count; bookmarkNumber++) {
long time = getBookmarkTime('CONCERT', bookmarkNumber);
int chapter = GetChapterNumberByTime('CONCERT', time);
if (chapter == 1) {
setText("F:MM_MENU_BOOKMARKS.Text_songs", "Song 1");
moveToXY("F:MM_MENU_BOOKMARKS.Text_songs", 200, 200);
}
if (chapter == 2) {
setText("F:MM_MENU_BOOKMARKS.Text_songs", "Song 2");
moveToXY("F:MM_MENU_BOOKMARKS.Text_songs", 300, 300);
}
....
}
}
Ну тогда возникает 100 ошибок.
@CDK,
Я не знаком с программированием и я не знаю откуда Вы взяли то что указано на верху в Вашем UDF, в мануале этого нет и как я понимаю простым смертным этого не дано. Ну если Вы знаете в полной мере правильность написания подобного UDF, то тогда скажите пожалуйста откуда взялось 100 ошибок. А учитывая что они не связаны с этим UDF, то это говорит об ошибке BDS.
Извините если что не так сказал.
Ошибка в скриптах - это не ошибка в BDS. Это ошибка в скриптах. Чтобы пользоваться скриптами нужно знать программирование. Иначе не получится. Может выслать проект - попробую посмотреть в течении недели.
Может быть есть какие нибудь ссылки или мануалы по программированию?
Вам нужны основы Java. Есть куча бесплатных обучающих видео на том же ютубе.
Скажите пожалуйста, какие параметры должны быть у .wav в Open sound в меню и Sounds на кнопке. Максимальная и минимальная частота дискретизации, сколько каналов допускается, максимальный размер .wav.