用NetStream的appendBytes播放FLV

public class MiniStream extends Sprite
{
    private var _buffer:ByteArray = new ByteArray();
    private var _ns:NetStream;
    private var _nc:NetConnection;
    private var _video:Video;
    private var _tc:Number = 0;
    private var _ustream:URLStream;
    private var _elapsed_bytes:uint = 0;

    public function MiniStream(onVideo:Function)
    {
        _video = new Video(400,300);
        addChild(_video);
        _ustream = new URLStream();
        _ustream.addEventListener(IOErrorEvent.IO_ERROR, onErr);
        _ustream.addEventListener(ProgressEvent.PROGRESS, onProgress);
        
    }

    public function play():void
    {
        _nc = new NetConnection();
        _nc.connect(null);

        if(_ns)
        {
            _ns.removeEventListener(NetStatusEvent.NET_STATUS, onStatus);
        }   
        _ns = new NetStream(_nc);
        _ns.addEventListener(NetStatusEvent.NET_STATUS, onStatus);
        _ns.client = {};
        _ns.bufferTime = 3;
        _video.attachNetStream(_ns);

        _ns.play(null);
        _ns.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN);
        _ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);

        _ustream.load("http://example.com/h264vid.flv");
    }

    private function onStatus(e:NetStatusEvent):void
    {
        trace(e.info.code);
    }

    private function onProgress(e:ProgressEvent):void
    {
        //stores in our BA buffer
        _ustream.readBytes(_buffer,0,_ustream.bytesAvailable);
        _buffer.position = 0;
        if(_buffer.bytesAvailable > 0)
        {
            _ns.appendBytes(_buffer);
            _elapsed_bytes += _buffer.length;
            _buffer.clear();
        }
    }

   private function netStatusHandler(evt:NetStatusEvent):void {
    if (evt.info.code == "NetStream.Play.Stop") {
        _ns.appendBytesAction(NetStreamAppendBytesAction.END_SEQUENCE);
    }
}

    private function onErr(e:IOErrorEvent):void
    {
        //trace("ERROR", e.text);
    }
}

 

转载于:https://www.cnblogs.com/fuland/p/4461350.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值