ナビゲーション・リンクをスキップ
JavaFX 8

パッケージjavafx.scene.media

音声およびビデオをJava FXアプリケーションに統合するクラスのセットを提供します。

参照: 説明

パッケージjavafx.scene.mediaの説明

音声およびビデオをJava FXアプリケーションに統合するクラスのセットを提供します。このパッケージの主な用途は、メディア再生です。メディア・パッケージには、MediaMediaPlayerおよびMediaViewの3つの主要なクラスがあります。

目次

  1. サポートされているメディア・タイプ
  2. サポートされているプロトコル
  3. サポートされているメタデータ・タグ
  4. Java FXでのメディアの再生

サポートされているメディア・タイプ

Java FXでは、異なる多くのメディア・タイプがサポートされます。メディア・タイプは、コンテナ・フォーマットと1つ以上のエンコーディングの組合せと考えられます。コンテナ・フォーマットは、単に、エンコードされたデータを含む基本的なストリームである場合があります。

サポートされているエンコーディング・タイプ

エンコーディング・タイプは、サンプリングされたオーディオまたはビデオのデータを格納する方法を指定します。通常、エンコーディング・タイプは特定の圧縮アルゴリズムを暗黙的に示します。次の表は、Java FXメディアでサポートされているエンコーディング・タイプを示します。

エンコーディングType説明
AACAudioAdvanced Audio Codingオーディオ圧縮
MP3Audio Raw MPEG-1、2および2.5オーディオ、レイヤーI、IIおよびIII、サポートされているすべてのサンプリング周波数とビット・レートの組合せ。注意: ファイルには少なくとも3個のMP3フレームが含まれている必要があります。
PCMAudio非圧縮、生のオーディオ・サンプル
H.264/AVCビデオH.264/MPEG-4 Part 10 / AVC (Advanced Video Coding)ビデオ圧縮
VP6ビデオOn2 VP6ビデオ圧縮

サポートされているコンテナ・タイプ

コンテナ・タイプは、エンコードしたオーディオ、ビデオおよびその他のメディア・データの格納に使用するファイル形式を指定します。各コンテナ・タイプは、1つ以上のMIMEタイプ、ファイル拡張子およびファイル・シグネチャ(ファイルの初期バイト)と関連付けられています。次の表は、Java FXメディアでサポートされているコンテナとエンコーディング・タイプの組合せを示します。

コンテナ説明ビデオ・エンコーディング オーディオ・エンコーディングMIMEタイプファイル拡張子
AIFFAudio Interchange File FormatN/A PCMaudio/x-aiff.aif, .aiff
FXM, FLVFX Media, Flash VideoVP6 MP3video/x-javafx, video/x-flv.fxm, .flv
HLS (*)MP2T HTTP Live Streaming (オーディオビジュアル)H.264/AVC AACapplication/vnd.apple.mpegurl, audio/mpegurl.m3u8
HLS (*)MP3 HTTP Live Streaming (オーディオのみ)N/A MP3application/vnd.apple.mpegurl, audio/mpegurl.m3u8
MP3MPEG-1、2、2.5生オーディオ・ストリーム(ID3メタデータv2.3またはv2.4を持つ可能性がある) N/AMP3audio/mpeg.mp3
MP4MPEG-4 Part 14H.264/AVC AACvideo/mp4, audio/x-m4a, video/x-m4v.mp4, .m4a, .m4v
WAVWaveform Audio FormatN/A PCMaudio/x-wav.wav

(*) HLSはコンテナ・タイプではなくプロトコルですが、同様の属性を集約するためにここに含めています。

サポートされているプロトコル

プロトコル説明参照先
FILE ローカル・ファイルのURI表現用プロトコル java.net.URI
HTTP リモート・ファイルの表現用ハイパーテキスト転送プロトコル java.net.URI
JAR FILEまたはHTTPプロトコルを介してアクセス可能なファイル内のメディア・エントリの表現 java.net.JarURLConnection
HTTPライブ・ストリーミング(HLS) HTTPを介したプレイリストベースのメディア・ストリーミング 『Internet-Draft: HTTP Live Streaming』

HTTPを介したMPEG-4再生

HTTPを介して再生されるMPEG-4メディアは、ストリームのデコードに必要なヘッダーがファイルの先頭に置かれるようにフォーマットされていることが推奨されます。そうでない場合、再生はファイル全体がダウンロードするまで停止することがあります。

HTTPライブ・ストリーミング(HLS)

HLS再生では、次の特性を持つソースを処理します。
  • オンデマンドおよびライブ・プレイリスト。
  • 基本的なMP3オーディオ・ストリーム(audio/mpegurl)、および1つのAACオーディオと1つのH.264/AVCビデオ・トラックの多重MP2Tストリーム(application/vnd.apple.mpegurl)。
  • 整数または浮動小数点期間のプレイリスト。
この基本プロファイルに一致しないソースは、処理が保証されません。プレイリストには、ソースを構成するストリームに関する情報が含まれ、再生の開始時にダウンロードされます。別のストリーム、ビット・レートおよびビデオ解像度との切替えは、ネットワーク条件の関数として自動的に処理されます。

サポートされているメタデータ・タグ

メディア・コンテナには、ファイル内のメディアを示す特定のメタデータを含めることができます。Java FXメディアAPIでは、
Media.getMetadata()メソッドを介してメタデータを使用可能にしています。このマッピングのキーは、次の表に示されたJava FXメディアでサポートされているタグを使用したタグと呼ばれます。どのタグが特定のメディア・ソースに使用可能かは、実際にそのソースに格納されているメタデータによって異なります。つまり、すべてのタグが使用可能であることが保証されているわけではありません。

コンテナ タグ(文字列型) Type 説明
FXM, FLV audio codec java.lang.String オーディオ・トラックに使用されたエンコーダ。
FXM, FLV duration javafx.util.Duration メディアの期間。
FXM, FLV video codec java.lang.String ビデオ・トラックに使用されたエンコーダ。
FXM, FLV width java.lang.Integer ビデオ・トラックの幅(ピクセル)。
FXM, FLV height java.lang.Integer ビデオ・トラックの高さ(ピクセル)。
FXM, FLV framerate java.lang.Double ビデオ・フレーム・レート(1秒当たりのフレーム数)。
FXM, FLV creationdate java.lang.String ビデオが作成された日付。
FXM, FLV, MP3 raw metadata Map<String,ByteBuffer> 適切なメディア仕様に従った生のメタデータ。キー「ID3」はMP3 ID3v2メタデータにマップされ、「FLV」はFLV onMetadataマーカー・コンテンツにマップされます。
MP3 album artist java.lang.String アルバム全体のアーチストで、コンピレーションの場合は「Various Artists」となることがあります。
MP3 album java.lang.String アルバムの名前。
MP3 artist java.lang.String トラックのアーチスト。
MP3 comment-N java.lang.String コメント、Nは0相対インデックス。コメント・フォーマット: ContentDescription[lng]=Comment
MP3 composer java.lang.String トラックのコンポーザ。
MP3 year java.lang.Integer トラックが録音された年。
MP3 disc count java.lang.Integer アルバムのディスク数。
MP3 disc number java.lang.Integer このトラックが存在するディスクの1相対インデックス。
MP3 duration javafx.util.Duration トラックの期間。
MP3 genre java.lang.String トラックのジャンル、Classical、DarkwaveまたはJazzなど。
MP3 image javafx.scene.image.Image アルバム・カバー。
MP3 title java.lang.String トラックの名前。
MP3 track count java.lang.Integer アルバムのトラック数。
MP3 track number java.lang.Integer ディスク上のトラックの1相対インデックス。

Java FXでのメディアの再生

基本的な再生

Java FXでメディアを再生するために必要な基本手順を次に示します。

  1. 必要なメディア・ソースのMediaオブジェクトを作成します。
  2. MediaオブジェクトからMediaPlayerオブジェクトを作成します。
  3. MediaViewオブジェクトを作成します。
  4. MediaPlayerMediaViewに追加します。
  5. Add the MediaViewをシーングラフに追加します。
  6. MediaPlayer.play()を起動します。
前述の手順は、MediaViewクラスのドキュメント内のサンプル・コードで示されています。次に、注意事項を示します。

エラー処理

Java FXメディア使用時のエラーは、同期的な場合と非同期的な場合のいずれかです。一般的に、同期エラーはそれ自体をJava Exceptionとして示し、非同期エラーの場合はJava FXプロパティが設定されます。後者の場合、errorプロパティが直接監視されるか、onErrorコールバックが登録されるか、その両方の場合もあります。

同期エラーの主なソースは、Media()およびMediaPlayer()です。非同期エラー・プロパティは、Media.errorおよびMediaPlayer.errorで、非同期エラー・コールバックはMedia.onErrorMediaPlayer.onErrorおよびMediaView.onErrorです。

一部のエラーは重複する場合があります。たとえば、MediaPlayerは、発生したエラーをその関連するMediaに伝播し、MediaPlayerからその関連するすべてのMediaViewへも伝播されます。その結果、どのプロパティをモニターするかに応じて、1つのエラーの発生に対して複数の通知を受信する可能性があります。

次のコード・スニペットは、メディアのエラー処理を示しています。

    String source;
    Media media;
    MediaPlayer mediaPlayer;
    MediaView mediaView;
    try {
        media = new Media(source);
        if (media.getError() == null) {
            media.setOnError(new Runnable() {
                public void run() {
                    // Handle asynchronous error in Media object.
                }
            });
            try {
                mediaPlayer = new MediaPlayer(media);
                if (mediaPlayer.getError() == null) {
                    mediaPlayer.setOnError(new Runnable() {
                        public void run() {
                            // Handle asynchronous error in MediaPlayer object.
                        }
                    });
                    mediaView = new MediaView(mediaPlayer);
                    mediaView.setOnError(new EventHandler() {
                        public void handle(MediaErrorEvent t) {
                            // Handle asynchronous error in MediaView.
                        }
                    });
                } else {
                    // Handle synchronous error creating MediaPlayer.
                }
            } catch (Exception mediaPlayerException) {
                // Handle exception in MediaPlayer constructor.
            }
        } else {
            // Handle synchronous error creating Media.
        }
    } catch (Exception mediaException) {
        // Handle exception in Media constructor.
    }

ナビゲーション・リンクをスキップ
JavaFX 8

Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.