BD-J или Blu-ray Disc Java - это спецификация, поддерживающая Java ME (в частности, персональный базовый профиль Connected Device Configuration или CDC) Xlets для расширенного содержимого на Blu-ray Disc и профиль Packaged Media Global Executable MHP ( GEM).
BD-J позволяет сделать бонусный контент на заголовках дисков Blu-ray намного более сложным, чем бонусный контент, предоставляемый стандартным DVD, включая доступ к сети, картинку в картинке и доступ к расширенному локальное хранилище. В совокупности эти функции (кроме доступа в Интернет) называются «Bonus View », а добавление доступа в Интернет называется «BD Live ». BD-J был разработан Ассоциацией дисков Blu-ray. Все проигрыватели дисков Blu-ray, поддерживающие видеоконтент, согласно спецификации должны поддерживать BD-J. Начиная с 31 октября 2007 года, все новые игроки должны иметь аппаратную поддержку функций «Bonus View», но игрокам могут потребоваться будущие обновления прошивки для включения этих функций. Поддержка «BD Live» всегда является необязательной для проигрывателя BD.
Sony PlayStation 3 была де-факто лидером в области соответствия и поддержки BD-J. PlayStation 3 добавила поддержку Blu-ray Profile 1.1 с обновлением прошивки и использовалась для демонстрации BD-Live на выставке CES 2008 в январе.
java.awt.Button
), поэтому дополнительные классы вызываются в игру для создания анимации и графического интерфейса. BD-J использует модель устройства и набор виджетов для использования удаленного управления, но он расширен, чтобы обеспечить поддерживаемые BD разрешения и элементы управления A / V, поддерживаемые BD.org.bluray
. Точная синхронизация позволяет приложениям точно синхронизировать с точным кадром, используя временные коды из пакета javax.media.Time
JMF (Java Media Framework ).java.net
пакет для подключения к серверам в Интернете. Физическое соединение может отличаться в зависимости от реализации, например. Ethernet, телефонная линия и т. Д. На уровне сети поддерживается TCP / IP и может использоваться протокол HTTP. Более того, пакет Java для безопасных соединений включен (JSSE ) как часть платформы BD-J. Прежде чем приложение BD-J сможет использовать сетевое соединение, оно должно быть аутентифицировано и иметь соответствующее разрешение на использование сети.У авторов контента есть различные доступные стратегии разработки, включая использование традиционные интегрированные среды разработки (IDE), такие как NetBeans или Eclipse, непрограммируемые графические среды, подобные Macromedia Director, или через механизмы визуализации, которые используют стандартные форматы данных, такие как как HTML, XML или SVG. Наличие полной среды программирования, доступной на каждом проигрывателе дисков Blu-ray, предоставляет разработчикам платформу для создания типов контента, не связанных ограничениями стандартного DVD. В дополнение к стандартным API BD-J разработчики могут использовать существующие библиотеки Java и каркасы приложений, при условии, что они не используют функции, выходящие за рамки ограничений платформы BD-J, включая то, что Java ME поддерживает только Java версии 1.3. файлы классов.
Набор свободно доступных инструментов, позволяющих разработчикам Java создавать полные образы дисков, включающих BD-J, доступен в HD Cookbook Project. Для тестирования контента в типичной среде разработки (MS Windows) требуется либо PlayStation 3, либо сторонний программный проигрыватель для Windows, обращая внимание на версии проигрывателя, чтобы убедиться, что проигрыватель поддерживает BD-J.
Из-за наличия множества различных стандартов и компонентов создание единой документации на BD-J оказалось сложной задачей.
Среда BD-J предназначена для работы Xlets с пакетами, отличными от javax. *
, доступны для использования функций, характерных для этой платформы, помимо тех, что определены в Java TV.
Даже простой пример, такой как FirstBDJApp.
Разработчик может решить использовать не пакеты javax. *
, а вместо этого использовать:
org.havi. *
: альтернативные классы для получения, например, org.havi.ui.HScene
, намного превосходящего то, что предоставляется javax.tv.graphics.TVContainer
(они оба являются расширениями java.awt.Container
)org.dvb. *
: классы, альтернативные, например, интерфейсу org.dvb.event.UserEventListener
, а не java.awt.event.KeyListener
для поддержки нажатия клавиш и кодов клавиш, характерных для популярных устройств CDC.org.bluray. *
: классы DAVIC и DVB зависят от распознавания дополнительных событий, свойственных платформе BD-J, таких как всплывающие меню, и для поиска носителей на диске Blu-ray.org. davic. *
: Небольшой набор классов, охватывающих или расширяющих другие сетевые и медиаресурсы, характерные для интерактивного телевидения, которые классы HAVi, DVB и Blu-ray используют для локаторов и специализированных исключений, выходящих за рамки JMF (например, авторизация контента).Рабочим примером программы, использующей некоторые функции из каждого из деревьев классов, может быть BdjGunBunny Xlet (очень простая версия Space Invaders, использующая изображение кролика в качестве стрелка. ter и черепахи в качестве целей), приведенный в качестве примера в Java ME 3.0 SDK.
import javax.tv.xlet.XletContext; импортировать org.havi.ui.HScene; import org.havi.ui.HSceneFactory; import java.awt.Container; import javax.tv.graphics.TVContainer; // Получение контейнера для экрана может быть public void initXlet (XletContext context) {// API Java TV для совместимости с Java TV TVContainer scene = TVContainer.getRootContainer (context); // Или для BD-J, чтобы использовать функции HAVi, недоступные в Java TV HScene scene = HSceneFactory.getInstance (). GetDefaultHScene (); // Или, возможно, в более общем плане... Контейнер container = null; логическое realBDJ = true; если (realBDJ) контейнер = HSceneFactory.getInstance (). getDefaultHScene (); иначе контейнер = TVContainer.getRootContainer (контекст);...}
и то же самое для других пакетов, отличных от javax. *
. Аналогичным образом, при попытке воспроизведения видео можно вызвать утилиту Blu-ray и DAVIC вместо использования стандартного JMF:
import javax.media.Player; import org.bluray.net.BDLocator; import org.davic.media.MediaLocator; MediaLocator stars = новый MediaLocator (новый BDLocator ("bd: //0.PLAYLIST: 00003")); Player player = Manager.createPlayer (звезды); // Вместо традиционного и портативного, но более ограниченного чистого JMF import java.net.URL; import javax.media.Manager; import javax.media.Player; Player mediaPlayer = Manager.createRealizedPlayer (новый URL ("файл: /mymovie.mov"));