【入門者向け】Javaにおける動画の扱い方を分かり易く解説

  • このエントリーをはてなブックマークに追加
  • Pocket

Javaプログラムで動画を扱うために、ここでは表示方法を紹介する。

Javaで動画を再生するためには、Java 8から標準になったJavaFXが使える。このライブラリーは、グラフィカルなユーザインタフェースを使って動画を再生するための機能をWebアプリケーションに提供している。

例えば、下の画面には再生や時間や音量を制御するためのボタンやスライダーが用意されている。これらは、すべてJavaFXのライブラリーを使って追加したものだ。

再生可能な動画の種類は、次の通りである。

  • FLV:VP6ビデオMP3音声を含む
  • MPEG-4:264/AVC (Advanced Video Coding)を含む

これらの動画がどのようにJavaFXで再生されるかを説明しよう。

動画再生の仕組み

最初に動画が保存されている場所などメディアに関係する情報をMediaクラスのオブジェクトに入れる。これをMediaPlayerクラスに渡し、再生を制御するメソッドを使って再生開始を要求すると動画の再生が始まる仕組みになっている。再生が始まると、MediaPlayer がMediaViewクラスに動画を表示する。

  • Media:メディアについての情報(場所、解像度、メタデータ)
  • MediaPlayer:メディアを再生のために制御機能を提供する主要なコンポーネント
  • MediaView:アニメーション、透過、エフェクトをサポートするノードオブジェクト

  

動画再生のサンプルプログラム

このサンプルプログラムは、ディスク上のMPEG-4ファイルを再生する。再生は画面下にある「>」ボタンを押すことにより再生が始まり、ボタンが「||」に変わる。次に、変更された「||」ボタンを押せば。再生は一時停止して、制御ボタンが「>」になる。

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;

public class SimpleMediaPlayer extends Application {//[1]
    MediaPlayer mediaPlayer;//[2]
    Button button;//[3]
    private static final String MEDIA_URL = "file:/C:/temp/sample.mp4";//[4]
    @Override//[5]
    public void start(Stage primaryStage) {//[6]
        primaryStage.setTitle("Simple Media Player");//[7]
        Media  media = new Media(MEDIA_URL);//[8]
        mediaPlayer = new MediaPlayer(media);//[9]
        MediaView mediaView = new MediaView(mediaPlayer);//[10]

        button = new Button(">");//[11]
        button.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);//[12]
        button.setOnAction(new EventHandler<ActionEvent>() {//[13]
            @Override
            public void handle(ActionEvent e) {//[14]
                MediaPlayer.Status status = mediaPlayer.getStatus();//[15]
                if (status == MediaPlayer.Status.UNKNOWN  || status == MediaPlayer.Status.HALTED) {//[16]
                    return;//[17]
                }
                if ( status == MediaPlayer.Status.PAUSED//[18]
                        || status == MediaPlayer.Status.READY//[19]
                        || status == MediaPlayer.Status.STOPPED) {//[20]
                    mediaPlayer.play();//[21]
                    button.setText("||");//[22]
                    return;//[23]
                }
                mediaPlayer.pause();//[24]
                button.setText(">");//[25]
            }
        });

        BorderPane controlPane = new BorderPane();//[26]
        controlPane.setBottom(button);//[27]
        BorderPane pane = new BorderPane();//[28]
        pane.setCenter(mediaView);//[29]
        pane.setBottom(controlPane);//[30]
        Scene scene = new Scene(pane, 540, 230);//[31]
        primaryStage.setScene(scene);//[32]
        primaryStage.sizeToScene();//[33]
        primaryStage.show();//[34]
    }

    public static void main(String[] args) {//[40]
        launch(args);//[41]
    }
}

実行結果

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] クラスSimpleMediaPlayerをApplicationから継承して定義する。
  • [2] 変数mediaPlayerを定義する。
  • [3] 変数buttonを定義する。
  • [4] 定数MEDIA_URLにfile:/C:/temp/sample.mp4を設定する。
  • [5]-[6] メソッドstartをオーバーライドして定義する。
  • [7] ウィンドウのタイトルにSimple Media Playerを設定する。
  • [8] Mediaクラスのmediaオブジェクトをメディア情報にMEDIA_URLを設定して作る。
  • [9] MediaPlayerクラスのmediaPlayerオブジェクトを引数にmediaオブジェクトを設定して作る。
  • [10] MediaViewクラスのmediaViewオブジェクトを引数にmediaPlayerオブジェクトを設定して作る。
  • [11] 「>」マークの再生ボタンオブジェクトを作る。
  • [12] 再生ボタンの大きさを設定する。
  • [13] ボタンのイベントハンドラーを設定する。
  • [14]-[17] mediaPlayerの状態がUNKNOWN やHALTEDの時に再生ボタンが押されても何もしない。
  • [18]-[23] mediaPlayerの状態がPAUSEDかREADYか STOPPEDの時に再生ボタンが押されたら、動画の再生を開始し、ボタンのマークに「>」を設定する。
  • [24]-[25] mediaPlayerの状態が上の状態のいずれでもない時、動画を一時停止して、ボタンのマークに「||」を設定する。
  • [26]-[27] controlPaneオブジェクトを作り、ボタンオブジェクトを配置する。
  • [28]-[30] paneオブジェクトを作り、mediaPlayer とcontrolPaneオブジェクトを配置する。
  • [31]-[34] primaryStage オブジェクトを引数としてsceneオブジェクトを作り、表示する。
  • [40] mainメソッドの定義を行う。
  • [41] アプリケーションを起動する。

 

まとめ

このページではJavaで動画を扱う方法について、サンプルプログラム付きで簡単に紹介した。

それぞれの処理内容の解説を参考にプログラムを少しずつ変えていくことで様々な応用が出来るので、参考にしていただければと思う。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する