Blu-Disc Studio: Создаём меню на Java. часть II - Страница 26

!!! Внимание, это архивный форум. Здесь написание новых сообщений отключено! Для того, чтобы присоединиться к обсуждению интересующих Вас тем, переходите в действующую версию форума, по адресу wedframe.ru

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

Показано с 251 по 260 из 306

  1. #1

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



    Официальный сайт программы

    Официальный сайт DVDLogic

    Blu-Disc Studio - это профессиональная программа для создания дисков Blu-Ray, предназначенная для простого создания дисков Blu-ray с интерактивным Java-меню.

    Используя Blu-Disc Studio, вы можете создавать полноценные диски Blu-ray для личного использования, для вывода CMF (мастеринга) или экспорта данных в Scenarist® BD.

    Усовершенствованный и мощный пользовательский интерфейс, не требующий специальных знаний спецификации BD, и встроенный DVDLogic BD Muxer делают Blu-Disc Studio доступным для домашних пользователей и любителей.

    Профессиональные пользователи и студии будут приятно удивлены поддержкой экспорта проекта в Scenarist® BD и возможностью вывода CMF встроенным мультиплексором.

    UHD-версия Blu-Disc Studio является частью KITe UHD Authoring Suite.


    Скриншоты

    Основное окно программы



    Создание глав



    Мтрица и свитч



    Структура проекта и расширенная анимация



    Подпись JAR



    Симуляция меню


    [свернуть]

    Демонстрация возможностей


    Друзья! Представляю вашему вниманию ролики меню, созданные в Blu-Disc Studio нашим коллегой - bbcby!
    Он любезно предоставил их нам, что бы мы сами могли убедиться, на что способна программа уже сейчас, не говоря о том, что она сможет создавать в будущем!
    Дружище, спасибо огромное за предоставленный материал!

    P.S. Ролики смотрим на полном экране с максимальным разрешением (1080р HD)







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

    Закладки и немного анимации.


    Диснеевский таймлайн и локализованный видеоряд

    Пояснения:
    В левом нижнем углу появляется окно с таймером и картинкой текущей главы. При нажатии клавиш "Следующая глава"и "Предыдущая глава" оно появляется на 15 секунд. При нажатии клавиш "Пауза", "Перемотка вперёд" и "Перемотка назад" оно висит всё время, пока не будет нажата клавиша "Воспроизведение".
    Переключение видеоряда происходит при смене языков озвучки — при выборе руского языка автоматически включается руский видеоряд, при выборе англиского языка автоматически включается английский видеоряд.
    В ролике видно, что русское название фильма меняется на английское.
    [свернуть]

    Описание возможностей


    Возможности
    * Создание как главного меню, так и попап
    * Добавление функции закладок
    * Создание таймлайн
    * Программирование кнопок пульта ДУ
    * Анимация графических объектов меню
    * Генерация текста и векторных прямоугольников
    * Настраиваемые переходы между клипами (муви)
    * Подсветка активного чаптера, звуковой дорожки или субтитров
    * Автоматическое создание сцен
    * Симлесс
    * Компиляция диска встроенным муксером DVDLogic
    * Экспорт проекта в Scenarist®

    Поддерживаемые форматы звука, видео, графики
    * Графика: PNG 32 bit (24 + 8), а также импорт Adobe® Photoshop® PSD
    * Видео: AVC (h264), VC-1, M2V (MPEG-2) с разрешением 1920x1080, 1440x1080, 1280x720 и фреймрейтом 23,976p, 24p, 25i, 29,97i
    * Звук: AC3 (Dolby Digital), E-AC3 (Dolby Digital +), True-HD, DTS, DTS-HD и стерео WAV
    * Субтитры: SRT, BDN.xml + PNG, PES + MUI

    Для создание диска в Blu-Disc Studio нужно
    * Подготовить видео и звук соответствующих форматов
    * Подготовить графику
    * Расставить аудио и видео дорожки
    * Разместить графику (кнопки и картинки) в дизайнере
    * Расставить переходы между кнопками, меню и муви
    * Откомпилировать проект встроенным муксером или экспортировать его в Scenarist® BD
    [свернуть]

    Видеоинструкции от bbcby


    Данные уроки сделаны по нашей просьбе bbcby, за что ему большое спасибо!

    Создание простого меню:


    Анимация меню сцен:


    Карусельная анимация меню сцен:

    [свернуть]


    Мануал Blu-Disc Studio (актуально до билда 4.0.0.1508) от kinor

    Шпаргалка функций плавности анимации Slide

    Для получение ключа на 30-дней нужно:
    - Поставить актуальную дату и время - Trial может не заработать при неправильной дате (спасет только перестановка).
    - Скачать и установить соответствующую версию программы: Blu-Disc Studio (без встроенного муксера) или Blu-Disc Studio MX (со встроенным муксером)
    - Запустить Blu-Disc Studio (MX) - она покажет Hardware ID
    - Отправить Hardware ID на адрес bludiscstudio@dvd-logic.com
    - В ответ придет key-файл (для MX-версии 2 файла)
    - Положить key-файл(ы) в папку с установленной программой

    ВНИМАНИЕ: триальная версия не работает на виртуальной машине.





    If you do not speak Russian: please write in two languages ​​- your native language or English and Russian using Google Translate.
    Последний раз редактировалось Mowny Devam; 11.06.2023 в 16:31.
  2. Поблагодарил:

     acem
  3. #251
    Здравствуйте. Кто-нибудь знает как сделать показ текущего времени для чаптера? Чтобы в начале каждого чаптера начиналось с 00:00:00. Я так понимаю, что нужно изменить
    manager.setText("F:РM_name_popup.Current_time", manager.time2str(manager.getMediaTime()));
    а вот get или set, или get/setTime или что-нибудь ещё, и что приписывать дополнительно, я не в курсе. Поиск в интернете не дал ответов. Я только знаю, что получившиеся скрипты нужно поместить в обычный свич чаптеров в AES.
  4. #252
    @maks8881, если я хоть что-нибудь в чем-нибудь понимаю, т.е. если я вас правильно понял,
    то почти так же как в таймлан попапе, только кроме упомянутой вами команды в ESA нужно > ПКМ на мувике > выбрать Open scenes (direct editing) и на каждом чаптере поставить команды:

    manager.setText("F:РM_name_popup.Current_time", manager.time2str(manager.getMediaTime()));
    manager.activateButtonEx("H:РM_name_popup.Handler", "Current_time", false);
    manager.activateSegment("S:РM_name_popup.show_menu");

    и в начале каждой главы будет появляться ваше попап name_popup с указанием времени текущей главы (а не 00:00:00).
    Желательно текст Current_time не делать кнопкой, а сделать виртуальную и ссылаться на неё ("H:РM_name_popup.Handler", "Dummy", false)
  5. #253
    @maks8881, если я хоть что-нибудь в чем-нибудь понимаю, т.е. если я вас правильно понял, ⁣
    Вы меня неправильно поняли. У меня Blu-ray audio и тайм линия всё время на виду. То, что Вы предлагаете, ничего не меняет. Мне нужно "изолированное" текущее время для каждого конкретного чаптера. Например, если время чаптера 4 мин., то чтобы показывалось текущее время этих четырёх минут. И, значит, чтобы начиналось на начале чаптера с 00:00:00.
  6. #254
    @maks8881, пардон, сумимасен десимасьта.
    Тогда команда будет такой
    manager.setText("F:РM_name_popup.Current_time", manager.time2str(manager.getMediaTime() - 2495000000000L));
    Где 2495 — время текущего чаптера в секундах.

    P.S. Если будет артачится переверните выражение 2495000000000L - manager.getMediaTime()
    Но должно и так работать
  7. #255
    @Mowny Devam, Сделал UDF из свича чаптеров. Поместил пока в пару мест. Пример одного чаптера:
    if (manager.getChapter('Movie name')==3) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:04:26");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(manager.getMediaTime() - 266000000000L));
    manager.setClipping("F:РM_Popup_name.Time", 0, 0, (int)(((double) manager.getMediaTime() / 1000000000d) * 1536 / 266 + 192), 1080);
    }
    manager.getMediaTime() - 266000000000L показывает время не с 00:00:00, начиная с третьего чаптера. На первом ничего, на втором начинается примерно на 15 сек. позднее. Где-то Вы допустили ошибку.
    Перевернул,
    266000000000L - manager.getMediaTime()
    время показывает правильное, но в обратном порядке. Это пригодится в будущем, спасибо, можно будет сделать переключение на обратный отсчёт.

    У меня два вопроса: Как насчёт ошибки показа времени, и что означает цифра "1" и буква "d" в 1000000000d, четвёртая строка? А если можете, то скажите, пожалуйста, напрямую, как правильно сделать и в
    manager.setClipping("F:РM_Popup_name.Time", 0, 0, (int)(((double) manager.getMediaTime() / 1000000000d) * 1536 / 266 + 192), 1080);
    Надеюсь и жду.
    Последний раз редактировалось maks8881; 12.11.2022 в 15:21.
  8. #256
    показывает время не с 00:00:00, начиная с третьего чаптера. На первом ничего, на втором начинается примерно на 15 сек. позднее.
    Это видимо связано с округлением до секунды (кадры не учитываются) и 23.976 fps (если такая) в небольшом промежутке времени, вот оно и набегает через пару-тройку диапазонов. Предлагаю поиграться с подбором более точного числа, с учетом кадров и fps.

    что означает цифра "1" и буква "d" в 1000000000d
    У нас время наносекундах, вот и выходит 1 секунда = 1000000000 наносекунд. (226 секунд = 266000000000 наносекунд)
    Буквы L и d — это диапазоны переменных (сколько бит выделять под переменные):
    L (long) - 32 бита, от -2 147 483 648 до 2 147 483 647
    d (double) - 64 бит, от 1.7E-308 до 1.7E308, это астрономическое число от чего его и пишут в экспоненциальном виде, нам оно излишне.

    manager.setText("F:РM_Timeline.Timer_End", "-" + manager.time2str(7310000000000L - manager.getMediaTime()));
    это выражение в основном применял в отображении оставшегося времени фильма.
    Но однажды стало показывать прямое время, пришлось переворачивать. Может чего-то не учел, так что на всякий случай написал, мало ли...
  9. #257
    А если можете, то скажите, пожалуйста, напрямую, как правильно сделать и в
    manager.setClipping("F:РM_Popup_name.Time", 0, 0, (int)(((double) manager.getMediaTime() / 1000000000d) * 1536 / 266 + 192), 1080);
    Да, к стати, не понял что значит "напрямую"?
    Команда вполне рабочая. Единственное длина таймлайна запредельно большая для такой продолжительности, почти 6 пикселей на секунду. Может хотя бы 2 пикселя?
  10. #258
    @Mowny Devam,
    У меня время плеймарков такое:

    00:00:00.000 04:26.516
    00:04:26.516 04:43:408
    00:09:09.924 04:56:546
    00:14:06.470 04:25:891
    00:18:32.361 06:08:493
    00:24:40.854 06:10:996
    00:30:51.850 05:02:802
    00:35:54.652 05:41:591
    00:41:36.243 05:20:946

    общее время 46:57:189

    Решил только показ прямого и обратного времени:

    Прямое время

    int streamId = 0;
    int streamId = 0;
    int chapterId = manager.getCurrentChapter();
    int curPlayListID = manager.getPlaylistID();
    manager.resetTicks();
    if (manager.getChapter('Movie name')==1) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:04:26");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(manager.getMediaTime()));
    }
    if (manager.getChapter('Movie name')==2) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:04:43");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(manager.getMediaTime() - 266516000000L));
    }
    if (manager.getChapter('Movie name')==3) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:04:56");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(manager.getMediaTime() - 549924000000L));
    }
    if (manager.getChapter('Movie name')==4) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:04:25");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(manager.getMediaTime() - 846470000000L));
    }
    if (manager.getChapter('Movie name')==5) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:06:08");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(manager.getMediaTime() - 1112361000000L));
    }
    if (manager.getChapter('Movie name')==6) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:06:10");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(manager.getMediaTime() - 1480854000000L));
    }
    if (manager.getChapter('Movie name')==7) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:05:02");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(manager.getMediaTime() - 1851850000000L));
    }
    if (manager.getChapter('Movie name')==8) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:05:41");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(manager.getMediaTime() - 2154652000000L));
    }
    if (manager.getChapter('Movie name')==9) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:05:21");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(manager.getMediaTime() - 2496243000000L));
    }
    [свернуть]

    Обратное время

    int streamId = 0;
    int chapterId = manager.getCurrentChapter();
    int curPlayListID = manager.getPlaylistID();
    manager.resetTicks();
    if (manager.getChapter('Movie name')==1) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:04:26");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(266000000000L - manager.getMediaTime()));
    }
    if (manager.getChapter('Movie name')==2) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:04:43");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(549924000000L - manager.getMediaTime()));
    }
    if (manager.getChapter('Movie name')==3) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:04:56");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(846000000000L - manager.getMediaTime()));
    }
    if (manager.getChapter('Movie name')==4) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:04:25");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(1111361000000L - manager.getMediaTime()));
    }
    if (manager.getChapter('Movie name')==5) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:06:08");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(1480854000000L - manager.getMediaTime()));
    }
    if (manager.getChapter('Movie name')==6) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:06:10");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(1851000000000L - manager.getMediaTime()));
    }
    if (manager.getChapter('Movie name')==7) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:05:02");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(2154000000000L - manager.getMediaTime()));
    }
    if (manager.getChapter('Movie name')==8) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:05:41");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(2496000000000L - manager.getMediaTime()));
    }
    if (manager.getChapter('Movie name')==9) {
    manager.setText("F:РM_Popup_name.Total_time", "/ 00:05:21");
    manager.setText("F:РM_Popup_name.Current_time", manager.time2str(2817189000000L - manager.getMediaTime()));
    }
    [свернуть]

    Из-за того, что в обратном времени могут быть артефакты на начале чаптера по сравнению с полным временем, поэтому там, где время переваливает за 500 милисекунд, например 04:25:891, то милисекунды в 846470000000L не вставляем = 846000000000L.
    В прямом времени указываем на втором чаптере время начала второго чаптера и т.д., а в обратном времени на втором ставим время начала третьего, на последнем общее время всего видео. В прямом на первом чаптере можно оставить manager.time2str(manager.getMediaTime()).

    @Mowny Devam, Я не смог решить clipping, потому что со второго чаптера он работает по другому.
    Спасибо за помощь. Мне было очень приятно снова пообщаться с Вами и услышать что-то вроде "сумимасен десимасьта".
    Последний раз редактировалось Mowny Devam; 15.11.2022 в 13:35.
  11. #259
    Я не смог решить clipping, потому что со второго чаптера он работает по другому.
    Вообще-то да, нужно доработать команду и сместить отсчет текущего времени в ноль.
    Что-то вроде этого:
    double Time = manager.getMediaTime() - 266000000000d;
    manager.setClipping("F:РM_Popup_name.Time", 0, 0, (int)((Time / 1000000000d) * 1536 / 266 + 192), 1080);

    Мне было очень приятно снова пообщаться с Вами и услышать что-то вроде "сумимасен десимасьта".
    Аригато годзяимас.
    Тоже очень рад, что вы снова освежива... э-э освежаете форум своими идеями.
  12. #260
    @Mowny Devam, Жаль, что "Что-то вроде этого", потому что BDS выдаёт ошибку с тем, что Вы написали. Я пробовал то, да сё, то не работает, то выдаёт ошибку. Я понимаю, что нужно изучать программирование на Java, но так неохооооота, тем более, что есть такой Добряк, как Вы.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)

Похожие темы

  1. Редактируем меню на Java
    от Palych в разделе Авторинг дисков Blu-ray
    Ответов: 1812
    Последнее сообщение: 29.03.2024, 18:38
  2. Blu-Disc Studio: Создаём меню на Java. часть I
    от CDK в разделе Авторинг дисков Blu-ray
    Ответов: 1999
    Последнее сообщение: 06.11.2021, 23:16
  3. MKVToolnix - Создаём MKV легко и быстро
    от Palych в разделе Общие вопросы авторинга
    Ответов: 25
    Последнее сообщение: 16.08.2015, 13:59
  4. Создаём глянцевый текст
    от WishMaster в разделе Графика и web дизайн
    Ответов: 0
    Последнее сообщение: 19.06.2013, 17:17
-->