home > AS3でFlv再生

AS3でFlv再生

September 05, 2008

VideoStageCls.asドキュメントクラス


package {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.net.*;

public class VideoStageCls extends Sprite{

//NETSTREAM
private var connection : NetConnection;
private var netStream : NetStream;
private var obj : Object;
private var video_obj : Video;
private var video_cotena : DisplayObjectContainer;

public function VideoStageCls()
{
VideoStart();
}

private function VideoStart():void
{
video_cotena = new Sprite();

addChild(video_cotena);

//ローカルファイルアクセス用のネットコネクションを作成する
connection = new NetConnection();
//ストリーミングの場合「null」を変更する
connection.connect (null);
//Object
obj = new Object();

//ネットストリームオブジェクトを作成する
netStream = new NetStream(connection);

//画面上に表示する
video_obj = new Video();
video_cotena.addChild(video_obj);
video_obj.x = 0;
video_obj.y = 0;
video_obj.width = 800;
video_obj.height = 600;

//ビデオオブジェクトとネットストリームオブジェクトを関連付ける
video_obj.attachNetStream (netStream);
netStream.play("flv/sample.flv");//再生
netStream.client = obj;

netStream.addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncErrorHandler);
netStream.addEventListener(IOErrorEvent.IO_ERROR,URLLoaderIOErrorFunc);
netStream.addEventListener(NetStatusEvent.NET_STATUS ,URLLoaderProgressFunc);

video_cotena.stage.addEventListener(Event.ENTER_FRAME, Main_EnterFrame);
}

private function Main_EnterFrame(event:Event){

//-----------------------------------------------------------------
//再生中の FLV ファイルに埋め込まれている詳細情報を取得
//-----------------------------------------------------------------

obj.onMetaData = function(param:Object){

trace("総時間 : " + param.duration + "秒");
trace("幅 : " + param.width);
trace("高さ : " + param.height);
trace("ビデオレート : " + param.videodatarate + "kb");
trace("フレームレート : " + param.framerate + "fps");
trace("コーデックID : " + param.videocodecid);

//キューポイント
var key:String;
for( key in param ){
trace("[ key ] " + key + ": " + param[key]);
}
}
}

private function asyncErrorHandler(event:AsyncErrorEvent):void
{
trace("ASYNC_ERROR");
}
private function URLLoaderIOErrorFunc(event:IOErrorEvent):void
{
trace ("ファイル入出力のエラー");
}
private function URLLoaderProgressFunc(event:NetStatusEvent):void
{
switch(event.info.code){
case "NetStream.Buffer.Empty":
trace ("バッファが空になったので中断");
break;
case "NetStream.Buffer.Full":
trace ("バッファを満たしたので再生");
break;
case "NetStream.Buffer.Flush":
trace ("ストリーム読み込みが終了した");
break;
case "NetStream.Play.Start":
trace ("再生の開始");
break;
case "NetStream.Play.Stop":
trace ("再生の停止");
break;
case "NetStream.Play.StreamNotFound":
trace ("FLV ファイルが見つからない");
break;
case "NetStream.Play.Failed":
trace ("その他のエラー");
break;
case "NetStream.Seek.Failed":
trace ("シークが失敗した");
break;
case "NetStream.Seek.InvalidTime":
trace ("有効ではないシーク時間を指定した");
trace ("指定可能なシーク時間 : " + event.info.details);
netStream.seek (event.info.details);
break;
case "NetStream.Seek.Notify":
trace ("シーク操作を完了");
break;
default:
trace ("その他のイベントコード:" + event.info.code);
}
}
}
}

【追記】
一時停止した動画を再び再生したい場合は
_netStream.pause();
_netStream.resume();

一時停止と再生を交互に繰り返したい場合は
_netStream.togglePause();

再生位置を取得する場合は
var time : Number = _netStream.time;

再生位置(単位:秒)を変更する場合は
_netStream.seek(20);



ブックマークする hatena del.ico.us


Comments

Post a Comment






Remember personal info