2013年12月6日金曜日

AS3.0 で [Embed]で埋め込んだ動画(FLVなど)の再生と終了を検知する方法

データ(ByteArray)からの動画再生

Flash10からデータ(ByteArray)を直接実行する機能がNetStreamクラスに追加されている。
NetStream.play()にnullを渡すことで、データ生成モードとなり、appendBytes()というメソッドを使ってデータ(ByteArray)から再生できる。
Flash10からの機能なのでFlash9向けのAPIリファレンスを見ると載っていないので注意。

動画の終了検知

データ生成モードの場合、通常の再生と異なり色々とイベントが発生しないようである。
通常はVideoクラスのEvent.COMPLETEイベントで終了を検知できるようだが、データ生成モードの場合はできない。

動画の終了を検知するには、NetStreamクラスのNetStatusEvent.NET_STATUSイベントを使用する。
NetStatusEventのinfoプロパティのcodeに 'NetStream.Buffer.Empty' が入っていたらappendBytes()で追加したデータをすべて使い切ったということなので、終了を検知できる。

netStream.addEventListener( NetStatusEvent.NET_STATUS, handler );

function handler(e:NetStatusEvent):void {

    if ( e.info.code == 'NetStream.Buffer.Empty' ) {
        // 動画終了時処理
    }
}

参考サイト

ビデオ再生方法
http://stackoverflow.com/questions/10579142/how-to-embed-flv-in-flash-and-play-it-with-as3

終了を検知してループ再生する方法
http://stackoverflow.com/questions/11891852/how-to-loop-video-using-netstream-in-data-generation-mode

0 件のコメント:

コメントを投稿