Спецификация Java Blu-ray
BD-J , или Blu-ray Disc Java , — это спецификация, поддерживающая Java ME (в частности, Personal Basis Profile of the Connected Device Configuration или CDC) Xlets для расширенного контента на Blu-ray Disc и профиля Packaged Media Globally Executable MHP (GEM).
BD-J позволяет использовать более сложный бонусный контент на Blu-ray Disc, чем стандартный DVD , включая сетевой доступ, «картинка в картинке» и доступ к расширенному локальному хранилищу . В совокупности эти функции (кроме доступа в Интернет) называются « Bonus View », а добавление доступа в Интернет называется « BD Live ». BD-J был разработан Ассоциацией Blu-ray Disc . Все проигрыватели Blu-ray Disc, поддерживающие видеоконтент, согласно спецификации должны поддерживать BD-J. [1] Начиная с 31 октября 2007 года все новые проигрыватели должны иметь аппаратную поддержку функций «Bonus View», но проигрывателям могут потребоваться будущие обновления прошивки для включения вышеупомянутых функций. Поддержка «BD Live» всегда является необязательной для проигрывателя BD. [2]
PlayStation 3 от Sony фактически стала лидером по соблюдению и поддержке BD-J, добавив поддержку Blu-ray Profile 1.1 с обновлением прошивки, использованным для демонстрации BD-Live на выставке CES 2008.
Возможности BD-J Xlet
- Вызов BD-J Xlets запускается событиями, происходящими вокруг них, например, выбором названия фильма или вставкой нового диска. Xlets, в свою очередь, могут затем вызывать другие Xlets в игру.
- Безопасность в BD-J основана на модели безопасности платформы Java. То есть подписанные приложения в JAR-файлах могут выполнять больше задач, чем неподписанные, например, доступ для чтения/записи к локальному хранилищу, сетевой доступ, выбор других заголовков на диске BD-ROM и управление другими запущенными приложениями BD-J.
- Xlets (как часть профиля CDC Personal Basis) не имеют GUI (т. е. нет виджетов AWT, таких как ), поэтому для генерации анимации и GUI в игру вступают дополнительные классы. BD-J использует модель устройства Havi UI и набор виджетов для использования удаленного управления, но он расширен, чтобы разрешить поддерживаемые BD разрешения и поддерживаемые BD элементы управления A/V.
java.awt.Button
- В BD-J есть классы, которые позволяют пользователю точно синхронизироваться с определенными кадрами фильма.
- Существует два типа разрешенных видеосинхронизаций: один называется «свободная синхронизация», которая использует метод обратного вызова и точна в пределах нескольких кадров события, а другой — «жесткая синхронизация», которая использует пакет . Жесткая синхронизация позволяет приложениям точно синхронизироваться до точного кадра, используя временные коды из пакета JMF ( Java Media Framework ).
org.bluray
javax.media.Time
- Графическим интерфейсом пользователя приложения BD-J можно управлять с помощью пульта дистанционного управления с необходимым набором клавиш и дополнительным указывающим устройством. Набор требуемых клавиш включает в себя как минимум клавиши, необходимые для поддержки пользовательских операций в приложениях фильмов высокой четкости (HDMV) .
- Структура GUI в BD-J включает структуру HAVi (6) UI, предписанную GEM ; это не структура GUI для настольных компьютеров, как Swing или AWT . Структура GUI основана на ядре AWT, как указано PBP, но набор виджетов включает механизмы для удаленного управления навигацией из GEM и легкой настройки внешнего вида и поведения из HAVi.
- BD-J включает в себя медиа-фреймворк, аналогичный JMF, для воспроизведения медиа-контента, связанного с диском BD-ROM. Предполагается, что диск BD-ROM будет основным источником медиа-файлов, но не единственным; другими источниками могут быть веб-сервер студии и локальное хранилище.
- BD-J включает стандартные библиотеки Java для декодирования и отображения изображений в форматах JFIF ( JPEG ), PNG и других. Эти изображения могут быть отображены на графической плоскости Java с использованием стандартных графических функций Java. Изображение также может быть отображено на фоновой плоскости с использованием специального пакета BD-J.
- Текст может быть визуализирован с использованием стандартных текстовых функций Java. Эти функции визуализации текста расширены более продвинутым менеджером макета текста, который интегрируется с фреймворком BD-J UI. Текст визуализируется с использованием векторного шрифта, который либо поступает с диска, проигрывателя (шрифт по умолчанию), либо загружается из сети.
- Звуки кнопок из HDMV также могут использоваться фреймворком Java UI. Звуковые файлы могут быть загружены и отображены как реакция на нажатие клавиши пользователем или как реакция на отмеченное событие, связанное с фильмом, или как реакция на любое событие, сгенерированное приложением BD-J.
- Аутентифицированные приложения могут использовать (подписанный) файл запроса на разрешение для получения разрешений, выходящих за рамки песочницы BD-J. Разрешения могут быть получены для:
- Чтение и запись в локальное и системное хранилище
- Использование сетевого подключения (для подключения к определенным серверам)
- Доступ к файловой системе на диске BD-ROM
- Выбор названия других произведений на диске BD-ROM
- Управление другими запущенными приложениями BD-J
- Приложения BD-J могут использовать пакет для подключения к серверам в Интернете. Физическое подключение может отличаться в зависимости от реализации, например, Ethernet, телефонная линия и т. д. На сетевом уровне поддерживается TCP/IP и может использоваться протокол HTTP . Более того, пакет Java для безопасных подключений включен ( JSSE ) как часть платформы BD-J. Прежде чем приложение BD-J сможет использовать сетевое подключение, оно должно пройти аутентификацию и иметь соответствующее разрешение на использование сети.
java.net
- Веб-сайты, на которые будет заходить приложение, находятся под полным контролем Поставщика контента. Этот контроль гарантируется двумя способами:
- Только (диск) аутентифицированные приложения BD-J могут работать при воспроизведении диска. Приложение контролирует использование сетевого соединения.
- Кроме того, разрешения, определенные на диске, могут ограничивать использование сетевого соединения (TCP/IP) для определенных сайтов.
- BD-J будет включать поддержку хранилища. Включены два вида хранилища: обязательное системное хранилище и необязательное локальное хранилище. Доступ ко всем хранилищам осуществляется с помощью методов из пакета Java IO. Путь к локальному хранилищу указан в [GEM].
- Системное хранилище — это хранилище, которое будет присутствовать во всех проигрывателях BD-J. Требуемый минимальный размер этого системного хранилища позволит хранить данные приложений, такие как настройки, рекорды и т. д. Его будет недостаточно для хранения загруженных AV-материалов. Для этой цели доступно дополнительное локальное хранилище. Обычно системное хранилище будет реализовано с использованием флэш-памяти, а дополнительное локальное хранилище будет реализовано на жестком диске.
- Поскольку хранилище является общим ресурсом для всех дисков, воспроизводимых на проигрывателе, контроль доступа Java является частью BD-J. Приложения BD-J могут получать доступ только к определенной части дискового пространства хранилища и не могут получать доступ к части, принадлежащей другим дискам.
Разработка контента
Авторам контента доступны различные стратегии разработки, включая использование традиционных интегрированных сред разработки (IDE), таких как NetBeans или Eclipse , непрограммируемых графических сред, подобных Macromedia Director, или через движки рендеринга, которые используют стандартные форматы данных, такие как HTML, XML или SVG. Наличие полной среды программирования, доступной на каждом проигрывателе Blu-ray Disc, предоставляет разработчикам платформу для создания типов контента, не связанных ограничениями стандартного DVD. В дополнение к стандартным API BD-J разработчики могут использовать существующие библиотеки Java и прикладные фреймворки, предполагая, что они не используют функции, выходящие за рамки ограничений платформы BD-J, включая то, что Java ME поддерживает только файлы классов Java версии 1.3 .
Набор свободно доступных инструментов, которые позволяют разработчикам Java создавать полные образы дисков, включающие BD-J, доступен в проекте HD Cookbook. [3] Для тестирования контента в типичной среде разработки (MS Windows) требуется либо PlayStation 3, либо сторонний программный проигрыватель для Windows, обращая внимание на версии проигрывателя, чтобы убедиться, что проигрыватель поддерживает BD-J. [4] [5] [6]
Из-за множества различных стандартов и компонентов создание единой документации по BD-J оказалось сложной задачей. [7] [8]
Пример кода
Среда BD-J предназначена для запуска Xlets с не- пакетами, доступными для использования функций, присущих этой платформе, помимо тех, которые определены Java TV .javax.*
Даже такой простой пример, как FirstBDJApp. [9]
Разработчик может решить не использовать пакеты, а вместо этого использовать:javax.*
- Классы HAVi в дереве пакетов : альтернативные классы для получения, например, гораздо большего, чем предусмотрено (они оба являются расширениями )
org.havi.*
org.havi.ui.HScene
javax.tv.graphics.TVContainer
java.awt.Container
- Классы цифрового видеовещания (DVB) в дереве пакетов : альтернативные классы, например, для интерфейса, а не для поддержки нажатий клавиш и кодов клавиш, характерных для популярных устройств CDC.
org.dvb.*
org.dvb.event.UserEventListener
java.awt.event.KeyListener
- Классы дисков Blu-ray в дереве пакетов : классы DAVIC и DVB используются для распознавания дополнительных событий, характерных для платформы BD-J, таких как всплывающие меню, и для поиска носителей на диске Blu-ray.
org.bluray.*
- Классы API DAVIC в дереве пакетов : небольшой набор классов, оборачивающих или расширяющих другие сетевые и медиаресурсы, характерные для интерактивного телевидения. Классы HAVi, DVB и Blu-ray используют для локаторов и специализированных исключений, выходящих за рамки JMF (например, авторизация контента).
org.davic.*
Рабочим примером программы, использующей некоторые функции из каждого дерева классов, может служить BdjGunBunny Xlet (очень простая версия Space Invaders, использующая изображение кролика в качестве стрелка и черепах в качестве целей), представленная в качестве примера в Java ME 3.0 SDK.
импорт javax.tv.xlet.XletContext ; импорт org.havi.ui.HScene ; импорт org.havi.ui.HSceneFactory ; импорт javax.tv.graphics.TVContainer ; // Получение контейнера для экрана может бытьpublic void initXlet ( контекст XletContext ) { // Java TV API для совместимости с Java TV TVContainer scene = TVContainer . getRootContainer ( context ); // Или для BD-J, чтобы использовать функции HAVi, недоступные в Java TV HScene scene = HSceneFactory . getInstance (). getDefaultHScene (); // Или, возможно, в более общем смысле... Контейнер container = null ; boolean realBDJ = true ; if ( realBDJ ) container = HSceneFactory . getInstance (). getDefaultHScene (); else container = TVContainer . getRootContainer ( context ); ... }
И то же самое для других не- пакетов. Аналогично, при попытке воспроизвести видео, можно вызвать утилиту Blu-ray и DAVIC вместо использования универсального JMF:javax.*
импорт javax.media.Player ; импорт org.bluray.net.BDLocator ; импорт org.davic.media.MediaLocator ; MediaLocator stars = new MediaLocator ( new BDLocator ( "bd://0.PLAYLIST:00003" )); Игрок player = Менеджер . createPlayer ( stars ); // Вместо традиционного и портативного, но более ограниченного чистого JMFимпорт java.net.URL ; импорт javax.media.Manager ; импорт javax.media.Player ; Плеер mediaPlayer = Менеджер . createRealizedPlayer ( новый URL ( "file:/mymovie.mov" ));
Сопутствующая публикация
- Программирование HD DVD и Blu-ray Disc The HD Cookbook (2008) Майкла Зинка, Филипа К. Старнера, Билла Фута - ISBN 978-0-07-149670-4 - веб-сайт книги
Смотрите также
Ссылки
- ^ "Разработка приложений Blu-ray BD-J с использованием Java ME". Архивировано из оригинала 2008-09-11 . Получено 2008-10-21 .
- ^ «Blu-ray Disc Assn. продвигает новый Bonus View».
- ^ [hdcookbook.jovial.com/ HDCookbook для BD-J]
- ^ "Blu-ray Disc Java и GEM/MHP/OCAP Authoring Notes and Guidelines". Архивировано из оригинала 2008-12-24 . Получено 2008-10-21 .
- ^ Получение программного обеспечения (BD-J) PC Player Архивировано 24 декабря 2008 г. на Wayback Machine — упоминается, что могут потребоваться специальные «версии для разработчиков» игры.
- ^ Приложение HelloWorld BD-J: Ваша первая чашка для DVD следующего поколения. Архивировано 07.02.2009 на Wayback Machine . Включает примечания по включению удаленной отладки или ведения журнала с помощью проигрывателей ПК.
- ^ Создание справочной документации Javadoc API для разработки приложений Blu-ray Disc
- ^ "Получение определения платформы BD-J". Архивировано из оригинала 2008-12-24 . Получено 2008-10-21 .
- ^ Разработка приложений для Blu-ray Disc с помощью Java ME, часть 1: Создание вашего первого приложения Брюс Хопкинс, сентябрь 2008 г.
Внешние ссылки
- Официальные форумы java.net BD-J — официальные форумы Sun java.net для Blu-ray Disc Java.
- bdjforum.com — неофициальный форум для разработчиков BD-J и вопросов, связанных с созданием HD-контента.
- Технические сессии JavaOne 2007: Производство Blu-ray Java Software Titles для Голливуда
- Официальный сайт DVB-MHP и DVB-GEM - открытое промежуточное программное обеспечение для интерактивного телевидения
- Телевидение без границ - Сайт MHP/OCAP от Стивена Морриса.
- HD Cookbook — Код и другие рецепты для Blu-ray Java, GEM, MHP и OCAP
- Решения Alticast BD-J