BD-J、またはBlu-ray Disc Javaは、 Blu-ray ディスク上の高度なコンテンツ用のJava ME (具体的には、 Connected Device Configuration (CDC)の Personal Basis Profile ) XletとGlobally Executable MHP (GEM)の Packaged Media プロファイルをサポートする仕様です。
BD-J は、ネットワーク アクセス、ピクチャー イン ピクチャー、拡張ローカル ストレージへのアクセスなど、標準DVDよりも高度なボーナス コンテンツを Blu-ray ディスク タイトルに収録できます。これらの機能 (インターネット アクセスを除く) は総称して「ボーナス ビュー」と呼ばれ、インターネット アクセスの追加は「BD ライブ」と呼ばれます。BD-J は、Blu-ray Disc Associationによって開発されました。ビデオ コンテンツをサポートするすべての Blu-ray ディスク プレーヤーは、仕様により BD-J をサポートする必要があります。[1] 2007 年 10 月 31 日以降、すべての新しいプレーヤーは「ボーナス ビュー」機能のハードウェア サポートが必須となりますが、プレーヤーは将来的にファームウェアを更新して前述の機能を有効にする必要がある場合があります。BD プレーヤーでは、「BD ライブ」のサポートは常にオプションです。[2]
Sony のPlayStation 3 は、BD-J の準拠とサポートにおいて事実上のリーダーであり、CES 2008 で BD-Live を紹介するために使用されたファームウェア アップグレードで Blu-ray Profile 1.1 のサポートを追加しました。
BD-J Xletの機能
- BD-J Xletの呼び出しは、映画のタイトルの選択や新しいディスクの挿入など、その周囲で発生するイベントによってトリガーされます。次に、Xlet は他の Xlet を呼び出して実行することができます。
- BD-J のセキュリティは、Java プラットフォーム セキュリティ モデルに基づいています。つまり、JAR 内の署名されたアプリケーションは、ローカル ストレージへの読み取り/書き込みアクセス、ネットワーク アクセス、BD-ROM ディスク上の他のタイトルの選択、実行中の他の BD-J アプリケーションの制御など、署名されていないアプリケーションよりも多くのタスクを実行できます。
- Xlet (CDC Personal Basis Profile の一部) には GUI (つまり、などのAWTウィジェット) がないため、アニメーションと GUI を生成するために追加のクラスが呼び出されます。BD-J は、リモート コントロール用に Havi UI デバイス モデルとウィジェット セットを使用しますが、BD でサポートされている解像度と BD でサポートされている A/V コントロールを可能にするために拡張されています。
java.awt.Button - BD-J には、ユーザーがフィルム内の特定のフレームに正確に同期できるようにするクラスがあります。
- 許可されているビデオ同期には 2 つのタイプがあります。1 つは「緩い同期」と呼ばれ、コールバック メソッドを使用し、イベントの数フレーム以内の精度を実現します。もう 1 つは「厳密な同期」と呼ばれ、パッケージを使用します。厳密な同期により、アプリケーションはJMF ( Java Media Framework )パッケージのタイムコードを使用して正確なフレームに正確に同期できます。
org.blurayjavax.media.Time - BD-J アプリケーションの GUI は、必要なキー セットとオプションのポインティング デバイスを備えたリモート コントロールで操作できます。必要なキー セットには、少なくとも高解像度ムービー (HDMV)アプリケーションでのユーザー操作をサポートするために必要なキーが含まれます。
- BD-JのGUIフレームワークには、GEMで規定されたHAVi (6)UIフレームワークが含まれています。これは、 SwingやAWTのようなデスクトップGUIフレームワークではありません。GUIフレームワークは、PBPで規定されたAWTのコアに基づいていますが、ウィジェットセットには、GEMからのリモートコントロールナビゲーションのメカニズムと、HAViからのルックアンドフィールの簡単なカスタマイズが含まれています。
- BD-J には、BD-ROM ディスクに関連するメディア コンテンツを再生するための JMF に似たメディア フレームワークが含まれています。BD-ROM ディスクがメディア ファイルの主なソースになることが想定されていますが、それが唯一のソースではありません。スタジオの Web サーバーやローカル ストレージも他のソースになる可能性があります。
- BD-J には、 JFIF ( JPEG )、PNG 、その他の画像形式の画像をデコードして表示するための標準 Java ライブラリが含まれています。これらの画像は、標準の Java グラフィック関数を使用して Java グラフィック プレーンに表示できます。また、BD-J 固有のパッケージを使用して、画像をバックグラウンド プレーンにレンダリングすることもできます。
- テキストは、標準の Java テキスト関数を使用してレンダリングできます。これらのテキスト レンダリング関数は、BD-J UI フレームワークと統合された、より高度なテキスト レイアウト マネージャーによって拡張されています。テキストは、ディスク、プレーヤー (デフォルトのフォント) から取得されるか、ネットワークからダウンロードされるベクター ベースのフォントを使用してレンダリングされます。
- HDMV のボタン サウンドは、Java UI フレームワークでも使用できます。サウンド ファイルは、ユーザーがキーを押したときの反応として、または映画に関連するマークされたイベントに対する反応として、あるいは BD-J アプリケーションによって生成されたイベントに対する反応として読み込まれ、レンダリングされます。
- 認証されたアプリケーションは、(署名された) 権限要求ファイルを使用して、BD-J サンドボックスを超える権限を取得できます。権限は次のものに対して取得できます。
- ローカルおよびシステムストレージへの読み取りと書き込み
- ネットワーク接続の使用(定義されたサーバーに接続するため)
- BD-ROMディスク上のファイルシステムへのアクセス
- BD-ROMディスク上の他のタイトルのタイトル選択
- 実行中の他のBD-Jアプリケーションの制御
- BD-J アプリケーションは、パッケージを使用してインターネット上のサーバーに接続できます。物理的な接続は、イーサネット、電話回線など、実装によって異なります。ネットワーク レベルでは、TCP/IPがサポートされており、HTTPプロトコルを使用できます。さらに、安全な接続のための Java パッケージ ( JSSE ) が BD-J プラットフォームの一部として含まれています。BD-J アプリケーションがネットワーク接続を使用するには、認証され、ネットワークを使用するための適切な権限を持っている必要があります。
java.net - アプリケーションがアクセスする Web サイトは、コンテンツ プロバイダーによって完全に制御されます。この制御は、次の 2 つの方法で保証されます。
- ディスクの再生時に実行できるのは、(ディスク)認証された BD-J アプリケーションのみです。アプリケーションはネットワーク接続の使用を制御します。
- さらに、ディスクに定義された権限により、特定のサイトへの (TCP/IP) ネットワーク接続の使用を制限できます。
- BD-J にはストレージのサポートが含まれます。必須のシステム ストレージとオプションのローカル ストレージの 2 種類のストレージが含まれます。すべてのストレージには、Java IO パッケージのメソッドを使用してアクセスします。ローカル ストレージのパスは、[GEM] で指定されているとおりです。
- システム ストレージは、すべての BD-J プレーヤーに搭載されるストレージです。このシステム ストレージの必要最小サイズは、設定やハイスコアなどのアプリケーション データの保存に使用できます。ダウンロードした AV 素材を保存するには十分ではありません。この目的のために、オプションのローカル ストレージが用意されています。通常、システム ストレージはフラッシュ メモリを使用して実装され、オプションのローカル ストレージは HDD 上に実装されます。
- ストレージはプレーヤーで再生されるすべてのディスク間で共有されるリソースであるため、Java アクセス制御は BD-J の一部です。BD-J アプリケーションは、ストレージ スペースのディスク固有の部分にのみアクセスでき、他のディスクに属する部分にアクセスすることはできません。
コンテンツ開発
コンテンツ作成者には、 NetBeansやEclipseなどの従来の統合開発環境(IDE) 、Macromedia Director に似たプログラミングを必要としないグラフィカル環境、HTML、XML、SVG などの標準データ形式を使用するレンダリング エンジンの使用など、さまざまな開発戦略が用意されています。すべての Blu-ray Disc プレーヤーで完全なプログラミング環境を利用できるため、開発者は標準 DVD の制限に縛られないコンテンツ タイプを作成するためのプラットフォームを利用できます。標準の BD-J API に加えて、開発者は既存の Java ライブラリとアプリケーション フレームワークを利用できます。ただし、Java ME ではJava バージョン 1.3 のクラス ファイル のみがサポートされるなど、BD-J プラットフォームの制約外の機能を使用しないことが前提です。
HD Cookbook Project では、Java 開発者が BD-J を組み込んだ完全なディスク イメージを作成できるようにする一連の無料ツールが提供されています。[3]一般的な開発環境 (MS Windows) でコンテンツをテストするには、PlayStation 3 または Windows 用のサードパーティ製ソフトウェア プレーヤーが必要です。プレーヤーのバージョンに注意して、プレーヤーが BD-J をサポートしていることを確認してください。[4] [5] [6]
さまざまな標準規格やコンポーネントが関係しているため、BD-Jに関する統一されたドキュメントを作成することは困難であることが判明しています。[7] [8]
サンプルコード
BD-J 環境は、Java TVで定義されている機能を超えてこのプラットフォーム固有の機能を利用できるように、非パッケージでXlet を実行するように設計されています。
javax.*
FirstBDJAppのような単純な例でも。[9]
開発者はパッケージを使用せず、代わりに以下を使用することを選択できます。
javax.*
- パッケージ ツリー内のHAViクラス:によって提供されるものよりもはるかに優れた を取得するための代替クラス(どちらも の拡張です)
org.havi.*org.havi.ui.HScenejavax.tv.graphics.TVContainerjava.awt.Container - パッケージ ツリー内のデジタル ビデオ ブロードキャスト(DVB) クラス:一般的な CDC デバイスに固有のキーの押下やキーコードのサポートではなく、たとえばインターフェイスの代替クラス。
org.dvb.*org.dvb.event.UserEventListenerjava.awt.event.KeyListener - パッケージ ツリー内の Blu-ray ディスク クラス: DAVIC クラスと DVB クラスは、ポップアップ メニューなどの BD-J プラットフォームに固有の追加イベントを認識し、Blu-ray ディスク上のメディアを見つけるためにこれに依存します。
org.bluray.* - パッケージ ツリー内のDAVIC API クラス: HAVi、DVB、Blu-ray クラスがロケーターや JMF の領域を超えた特殊な例外 (コンテンツ認証など) に使用する、インタラクティブ TV に特有のその他のネットワーク リソースやメディア リソースをラップまたは拡張するクラスの小さなセット。
org.davic.*
各クラス ツリーの一部の機能を使用するプログラムの実例としては、Java ME 3.0 SDK の例として提供されている BdjGunBunny Xlet (ウサギの画像をシューターとして、カメをターゲットとして使用する、 Space Invadersの非常にシンプルなバージョン) があります。
javax.tv.xlet.XletContextをインポートします。
org.havi.ui.HSceneをインポートします。org.havi.ui.HSceneFactoryをインポートします。
java.awt.Containerをインポートします。javax.tv.graphics.TVContainerをインポートします。
// 画面のコンテナを取得するには
パブリックvoid initXlet ( XletContextコンテキスト) {
// Java TV API は Java TV と互換性があります
TVContainer scene = TVContainer . getRootContainer ( context );
// または、BD-J の場合、Java TV では利用できない HAVi 機能を利用するには、
HScene scene = HSceneFactory . getInstance (). getDefaultHScene ();
// あるいはもっと一般的には...
Container container = null ; boolean realBDJ = true ; if ( realBDJ ) container = HSceneFactory.getInstance ( ). getDefaultHScene ( ) ; else container = TVContainer.getRootContainer ( context ) ; ... }
他の非パッケージについても同様です。同様に、ビデオを再生しようとする場合、汎用 JMF を使用するのではなく、Blu-ray および DAVIC ユーティリティを呼び出すことができます。
javax.*
javax.media.Playerをインポートします。org.bluray.net.BDLocatorをインポートします。org.davic.media.MediaLocatorをインポートします。
MediaLocator stars = new MediaLocator ( new BDLocator ( "bd://0.PLAYLIST:00003" )); Player player = Manager . createPlayer ( stars );
// 従来型でポータブルだが制限の多い純粋なJMFよりも
java.net.URLをインポートします。javax.media.Managerをインポートします。javax.media.Playerをインポートします。
プレーヤーmediaPlayer = Manager.createRealizedPlayer ( new URL ( "file:/mymovie.mov" ) ) ;
関連出版物
- HD DVD と Blu-ray ディスクのプログラミング HD Cookbook (2008)、Michael Zink、Philip C. Starner、Bill Foote 著 - ISBN 978-0-07-149670-4 - 書籍ウェブサイト
参照
- アドバンスト コンテンツ、 HD DVDにおける BD-J の同等物
参考文献
- ^ 「Java ME を使用した Blu-ray BD-J アプリケーション開発」。2008 年 9 月 11 日時点のオリジナルよりアーカイブ。2008年 10 月 21 日閲覧。
- ^ 「Blu-ray Disc Assn. が新しい Bonus View を推進」。
- ^ [hdcookbook.jovial.com/ BD-J 用 HDCookbook]
- ^ 「Blu-ray Disc Java および GEM/MHP/OCAP オーサリング ノートおよびガイドライン」。2008 年 12 月 24 日時点のオリジナルよりアーカイブ。2008年 10 月 21 日閲覧。
- ^ (BD-J) PC プレーヤー ソフトウェアの入手 2008-12-24 にWayback Machineでアーカイブ- 特別な「開発者バージョン」のプレイが必要になる可能性があると記載されています
- ^ HelloWorld BD-J アプリケーション: 次世代 DVD 用の最初のカップ アーカイブ 2009-02-07 at the Wayback Machine - PC プレーヤーでのリモート デバッグまたはログ記録を有効にする方法のメモが含まれています
- ^ ブルーレイディスクアプリケーション開発のための Javadoc API リファレンスドキュメントの作成
- ^ 「BD-J プラットフォーム定義の取得」。2008 年 12 月 24 日時点のオリジナルよりアーカイブ。2008 年 10 月 21 日閲覧。
- ^ Java ME による Blu-ray ディスク アプリケーション開発、パート 1: 最初のアプリケーションの作成 Bruce Hopkins、2008 年 9 月
外部リンク
- 公式 java.net BD-J フォーラム - Blu-ray Disc Java の公式 Sun java.net フォーラム。
- bdjforum.com - BD-J 開発者向けの非公式フォーラムであり、HD オーサリングに関連する問題を扱います。
- JavaOne 2007 テクニカルセッション: ハリウッド向け Blu-ray Java ソフトウェアタイトルの制作
- DVB-MHP および DVB-GEM の公式ウェブサイト - インタラクティブ TV 向けオープン ミドルウェア
- TV Without Borders - Steven Morris による MHP/OCAP ウェブサイト。
- HD クックブック - Blu-ray Java、GEM、MHP、OCAP のコードとその他のレシピ
- Alticast BD-J ソリューション
