Cvideo
Video객체를 그냥 사용하려고 하면 여러 줄의 코딩이 필요합니다. FMS등과 연결할 때는 세밀한 조율이 필요하겠으나 일반적인 웹서버에서 스트리밍으로 재생할 때는 단순하게 사용할 수 있는 방법이 필요합니다.
Cvideo는 Video를 직접 상속받아 만들었습니다. 내부에 귀찮은 NetStream과 NetConnection의 구현을 자동화하고 콜백함수도 내장하고 있습니다.
package com.bsidesoft.display{
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.net.*;
final public class Cvideo extends Video{
private var _url:String;
private var _stream:NetStream;
private var _duration:uint;
private var _resize:Function;
private var _end:Function;
public function Cvideo($width:int=320,$height:int=240){
super($width,$height);
var c:NetConnection=new NetConnection();
c.connect(null);
_stream=new NetStream(c);
_stream.client=this;
_stream.addEventListener(NetStatusEvent.NET_STATUS,hnStatus);
attachNetStream(_stream);
}
public function onMetaData($data:Object):void{
_duration=$data.duration;
}
public function play($url:String,$p:Object=null):void{
_stream.play($url);
_resize=null;
_end=null;
if($p){
if($p['resizer'])_resize=$p['resizer'];
if($p['end'])_end=$p['end'];
}
}
public function resume():void{_stream.resume()}
public function stop():void{_stream.pause()}
private function hnStatus($e:NetStatusEvent):void{
if(_resize)if(videoWidth>0)if(videoWidth!=width)_resize(videoWidth,videoHeight);
if(_end)if($e.info.code==='NetStream.Play.Stop')_end();
}
}
}
관련된 글: