AIRやFLASHなどを表示するのに不便なので、ブログから自作サイトに移転します。

N2-Works移転先

今後はこちらで更新を行っていきます。


FLVPlayer制作の第3回はFLV動画の再生です。


FLV動画の再生ではまずNetConnectionクラスを使用します。

NetConnectionクラスを使用してサーバーのローカル領域に接続します。

(※)FlvPlayerですからローカルのFLVファイルの再生を目的とします。


では以下のコードでローカル領域に接続します。


// コネクションの生成
var connection:NetConnection = new NetConnection();
// ローカル領域と接続
connection.connect(null);


NetConnectionのconnectメソッドの引数にnullを設定することによってローカル領域に接続することができます。

次にConnectionにイベントリスナーを設定し、接続の状態を見張ります。

イベントリスナーのコールバックを受ける関数名は自由に設定して下さい。

ここではNetStatusHandlerとします。セキュリティエラーなどのコールバックを受ける場合も同じようにして設定しますが、ここでは省略します。参考資料などを参照して下さい。


// イベントリスナーの生成
connection.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler);


設定したイベントリスナーで接続状態を監視することになりますが、イベント発生と共にイベント引数が引き渡されます。この中のcodeにはイベントの種類ごとに文字列が挿入されていますので、codeの中身を参照して処理を行います。具体的には以下のようなコールバック関数を定義すればよいことになります。



private function NetStatusHandler(evt:NetStatusEvent) : void
   switch (evt.info.code) {
   case "NetConnection.Connect.Success":      // 接続成功
       // 処理
       break;
   case "…"                                  // 何らかのイベント
        break;
   }
}


イベントの一覧はこちら(URL )を参照して下さい。


さて、ローカル領域との接続に成功したら次は動画の再生領域とストリームソケットの作成です。再生領域にはVideoクラス、ストリームソケットにはStreamクラスが用意されています。

それらは以下のように使用します。


// ストリームの作成
var stream:NetStream = new NetStream(connection);

// イベントリスナの追加
stream.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler);

// 動画の表示領域の生成
var video:Video = new Video();
video.x = 0;
video.y = 0;
video.attachNetStream(stream);


NetStreamクラスをNetConnectionに関連付けて作成します。この時、ストリームソケット上で起こるイベントを取得するため、イベントリスナーを用意しますが、こちらも文字列でcodeが取得できるので、NetConnectionと同じコールバック関数を指定して構いません。codeの文字列が被る事はないので問題なく処理を行うことができます。


次にVideoクラスの設定を行っています。どのストリームソケットを関連付けるかをattachNetStreamメソッドで指定します。


これで再生のための準備は出来ました。後はNetStreamクラスのメソッドを使用することによってVideoクラスで指定した領域にFLV動画を再生することができます。


// 動画ストリーミングの再生開始
stream.play({url:String});

// 動画ストリーミングの一時停止
stream.pause();

// 動画ストリーミングの再開
stream.resume();

// 動画ストリーミングの停止
stream.stop();

// 動画ストリーミングのシーク
stream.seek({秒数:uint});


ここで注意して欲しいのは、playは最初の再生開始にしか使用しないことです。一時停止状態からresumeを使用せずにplayを使用するとエラーになります。urlはFLV動画ファイルパスを指定します。


FLV動画の再生については以上です。さすがにActionScript3.0は高レベル言語なので自由自在にデータを操れるわけではないですが、思ったより簡単に動画が再生できるじゃないかと思われた方も多いのではないでしょうか?


では次回はFLVファイルのメタデータについて書きます。