1 JavaFXメディアの概要
Web上でのメディア・コンテンツの普及により、ビデオとオーディオはインターネット・アプリケーションに不可欠な要素になりました。従来のメディア用途の範囲を拡大するというアイディアから、一連のJava APIを介して使用可能なJavaFXメディア機能が作成されました。javafx.scene.media
パッケージを使用することにより、開発者は、デスクトップ・ウィンドウまたはサポートされるプラットフォーム上のWebページ内でメディアを再生する、メディア・アプリケーションを作成できます。
図1-1に、JavaFXアプリケーションで可能な、様々なメディア用途を示します。
JavaFXメディア機能でサポートされるオペレーティング・システムとJavaランタイム環境(JRE)は、「Java SE download」ページ(http://www.oracle.com/technetwork/java/javase/downloads/
)からリンクしている「Certified System Configurations」ページにリストされているものと同じです。
サポートされるメディア・コーデック
現在サポートされている形式は、次のとおりです。
-
オーディオ: MP3、非圧縮PCMを含むAIFF、非圧縮PCMを含むWAV、Advanced Audio Coding (AAC)オーディオを含むMPEG-4マルチメディア・コンテナ
-
ビデオ: VP6ビデオとMP3オーディオを含むFLV、H.264/AVC (Advanced Video Coding)ビデオ圧縮を含むMPEG-4マルチメディア・コンテナ
注意:
On2 VP6ビデオ・デコーダをセミコンダクタまたはレジスタ転送レベル(RTL)、あるいはOn2 VP6ビデオ・デコーダのセミコンダクタ実装の開発に必要なその他の類似レベルの設計に統合することはできません。
FLVコンテナは、JavaFX SDKでサポートされるプラットフォーム上のメディア・スタックでサポートされます。この形式でエンコードされた単一のムービーは、サポートされているプラットフォーム上でシームレスに機能します。メディアのストリーミングを有効にするには、サーバー側で標準FLV MIME設定を行う必要があります。
MPEG-4マルチメディア・コンテナも、JavaFX SDKでサポートされているすべてのオペレーティング・システムでサポートされます。Mac OS XおよびWindows 7プラットフォームでは、追加のソフトウェアなしで再生できます。ただし、Linuxオペレーティング・システムとWindows 7以前のバージョンのWindowsでは、「Java SE download」ページ(http://www.oracle.com/technetwork/java/javase/downloads/
)からリンクしている「Certified System Configurations」ページに記載されている、入手可能なサード・パーティ・ソフトウェア・パッケージをインストールする必要があります。AACおよびH.264/AVCデコードには、http://www.oracle.com/technetwork/java/javase/downloads/
で提供されているリリース・ノートに記載されているように、いくつかのプラットフォーム依存の制限があります。
いくつかのオーディオおよびビデオ圧縮タイプのデコードは、オペレーティング・システム固有のメディア・エンジンに依存しています。JavaFXメディア・フレームワークは、これらのネイティブ・エンジンによってサポートされるすべてのマルチメディア・コンテナ形式とメディア・エンコーディングを処理するように設計されていません。かわりに、このフレームワークでは、JavaFXがサポートされるすべてのプラットフォーム上で同等の、十分にテストされた機能が提供されます。
JavaFXメディア・スタックによってサポートされる機能には、次のものがあります。
-
MP3およびVP6を含むFLVコンテナ
-
MP3オーディオ
-
AAC、H.264、またはこれら両方を含むMPEG-4コンテナ
-
HTTP、FILEプロトコルのサポート
-
プログレッシブ・ダウンロード
-
シーク
-
バッファの経過
-
再生機能(再生、一時停止、停止、音量、ミュート、バランス、イコイライザ)
HTTPライブ・ストリーミングのサポート
HTTPライブ・ストリーミングのサポートに加えて、JavaFXメディアを使用してプレイリスト・ファイルをダウンロードし、ビデオまたはオーディオ・セグメントを再生できるようになりました。メディア・プレーヤでは、プレイリスト・ファイル内の指定とネットワーク状況に基づいて、別のストリームに切り替えることが可能になりました。指定されたストリームには、1つのプレイリスト・ファイルと、ストリームが分割された一連のセグメントがあります。ストリームは、MP3ロー・ストリーム、またはマルチプレックスAACオーディオおよびH.264ビデオを含むMPEG-TSです。ストリームは、ストリームが静的ファイルである場合はオンデマンドで再生でき、ストリームがライブでフィードされている場合はライブで再生できます。いずれの場合でも、ストリームはそのビット・レートを調整でき、ビデオの場合はその解像度を調整できます。
メディア・プレーヤの作成
JavaFXメディアの概念は、次のエンティティに基づいています。
-
Media - メディアのソース、解像度、メタデータなど、メディアに関する情報を含むメディア・リソース
-
MediaPlayer - メディア再生のためのコントロールを提供する主要コンポーネント
-
MediaView - アニメーション、透明度およびエフェクトをサポートするノード・オブジェクト
メディア機能の各要素は、JavaFX APIを介して使用できます。図1-2は、javafx.scene.media
パッケージに存在するクラスを示しています。これらのクラスは相互に依存しており、埋込みメディア・プレーヤを作成するために組み合せて使用されます。
MediaPlayer
クラスは、メディア再生を制御するために必要なすべての属性と関数を提供します。AUTO_PLAY
モードを設定するか、play()
関数を直接呼び出すか、あるいはメディアの再生回数を明示的に指定できます。VOLUME
変数とBALANCE
変数は、それぞれ音量レベルと左右の設定を調整するために使用できます。音量レベルの範囲は、0から1.0 (最大値)です。バランスの範囲は、最も左を示す-1.0から、中央を示す0、そして右を示す1.0まで連続しています。
play()
、stop()
およびpause()
関数は、メディアの再生を制御します。さらに、一連の関数によって、プレーヤで次のいずれかが行われた場合に特定のイベントが処理されます。
-
データのバッファ
-
メディアの最後に到達
-
再生を続けるのに十分な速度でデータを受信できないため、機能停止
-
MediaErrorEvent
クラスに定義されている、いずれかのエラーが発生
MediaView
クラスはNode
クラスを拡張し、メディア・プレーヤによって再生されているメディアのビューを提供します。これは主に、エフェクトと変換を担当します。そのmediaPlayer
インスタンス変数は、メディアを再生しているMediaPlayer
オブジェクトを指定します。その他のブール属性は、メディア・プレーヤの回転を有効にするなど、Node
クラスによって提供される特定のエフェクトを適用する役割を果します。
javafx.scene.media
パッケージの詳細は、APIドキュメント
を参照してください。