Videoオブジェクトを使うと、FLASHでFLASHビデオ(flv)やmp4などの動画ファイルを再生することができます。

Videoオブジェクトの再生処理では、サーバーやファイルシステムとの接続を管理するNetConnectionとファイルの取得や再生を行うNetStreamを使って動画ファイルを扱い、VideoオブジェクトにNetStreamで再生する動画を表示する、という形式になるようです。再生の管理も、VideoではなくNetStreamオブジェクトを通して行います。

とりあえず、動画ファイル(FLASHのswfと同じディレクトリのtest.mp4)を再生する最低限のコードは以下のようになります。

package {

	import flash.display.Sprite;
	import flash.media.Video;
	import flash.net.*;

	public class flash_video extends Sprite {

		private var video:Video;
		private var conn:NetConnection;
		private var stream:NetStream;

		public function flash_video() {

			conn = new NetConnection();

			conn.connect(null);

			stream = new NetStream(conn);

			video = new Video();
			video.attachNetStream(stream);

			stream.play("test.mp4");

			addChild(video);

		}

	}

}

mxmlcでビルドしたswfとtest.mp4という名前で保存した適当なmp4ファイルをサーバーに転送したら、swfを開いてみましょう。デフォルトでは、セキュリティの制約でローカル上にswfと動画ファイルを置いても再生できない(動画ファイルを読み込めない)ので、注意してください。

エラー処理など一切していませんが、VideoオブジェクトのコンストラクタなどでVideoの大きさを設定してやれば、とりあえず動画の再生を行うだけの簡単なFlashとしては十分でしょうかね。swfのファイルサイズも、700バイトほどと小さいですし。

エラー処理や接続状況の確認を行う場合は、NetConnectionやNetStreamのイベントを捕捉します。それぞれのaddEventListener()でイベントハンドラを設定し、イベントハンドラ内でイベント情報を調べて、接続準備の完了やファイル読み込み失敗などイベントが生じた状況を確認するわけです。

古いFlashプレイヤーではH.264のflvやmp4が再生できないなど対応コーデックの制限が生じる場合があるので、注意が必要かもしれません。

もうすぐやってくる本格的なHTML5時代には、この種の単純な動画再生FLASHはvideoタグに置き換わることになるのでしょう。ただ、あと数年は「videoタグ未対応のWebブラウザ用に、videoタグで再生するためのmp4を再生可能なFlashも置いておく」ことになるのか。


創作プログラミングの街 > Flex(FLASH/AIR)実験室