用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);
    }
}
时间: 2024-10-11 07:23:37

用NetStream的appendBytes播放FLV的相关文章

FluorineFx 播放FLV 时堆棧溢出解决 FluorineFx NetStream.play 并发时,无法全部连接成功的解决办法

http://25swf.blogbus.com/tag/FluorineFx/ FluorineFx NetStream.play 并发时,无法全部连接成功的解决办法 在FLASH里,假如在一个方法里,同事使用几个不同的NetStream.play 一个相同的标识,会发现只有一个能正常播放. 进行以下修改 RtmpConnection.cs 里的NewPlaylistSubscriberStream 方法if (streamId < StreamId)        return null;改

利用开源jPlayer播放.flv视频文件

最近工作中用到视频播放,在网上搜索对比了好几款开源播放插件后,觉得 jPlayer 是比较不错的,故作此记录! 接下来先快速的展示一下 利用jPlayer播放.flv视频的效果: 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="tex

MVC应用程序播放FLV视频,部分视图可多地方重复引用

网页上播放Falsh之外,还有一种格式就是FLV的视频,也是最常见的.Insus.NET再想在MVC应用程序实现这功能. 实现这个功能,需要从网上下载一个叫vcastr22.swf.如果在网上找不到,可以从下面这个链接下载:http://download.cnblogs.com/insus//MVC/vcastr22.swf 然后放在应用程序下的Scripts目录之下. 创建一个model,由于前一次练习中<MVC应用程序播放RealPlayer(rmvb)视频>http://www.cnbl

HTTP协议下可拖动时间轴播放FLV的实现(伪流媒体)

HTTP协议下实现FLV的播放其实并不复杂,当初实现的原理是使用了flowPlayer插件实现的,效果还不错.但仍有两大问题影响着客户的访问情绪: 1.预加载时页面卡死,似乎没有边下边播. 2.偶尔边下边播,却无法拖动时间轴至未下载的部分.相信很多人也遇到该问题. 一度想采用专门的媒体服务器如Adobe的FMS去实现该功能,后多方查找资料,发现采用媒体服务器成本较高,且效率并不是很好,各大视频网站也未采用该方式.而实现HTTP协议下播放flv并可拖动时间轴并非没有可能,关键在于以下几点: Flv

服务器无法播放flv格式的视频解决办法

浏览某个网站时播放视频可能会出现下面的情况: 其实原因很简单,因为国内大多都是Win2003的主机 .默认是没有指定输出FLV这种格式的. 虽然FTP里面可以看见,但无法通过http访问,也就无法播放了. 打开IIS 管理器 选择网站属性 http 头 MIME类型 新建一个类型 扩展名字是 .FLV 类型是 flv-application/octet-stream 然后确定.

html播放flv视频,wamp多站点配置及遇到问题,php和js的cookie

需要的文件为flvplayer.swf文件,不同swf文件有一定差异,下载链接http://yun.baidu.com/share/link?shareid=2302736558&uk=1879621042, 在html的代码为 <embed src="/js/flvplayer.swf" flashvars="vcastr_file=test.flv&IsAutoPlay=1&IsContinue=0&IsShowBar=0"

NetStream.appendBytes, 走向Flash P2P VOD的第一步

之前被告知可以自行实现Flash p2p的点播功能, 但一直疑惑, 印象中NetStream并未提供相关方法, 前天看订阅时发现的文章: ByteArray Access to NetStream in Flash Player 10.1 [ by Thibault Imbert ] 进而找到文档: NetStream.html#appendBytes() 看过上述两篇文章后, 对appendBytes这个方法有一定了解, 简单来讲就是在数据生成模式下提供NetStream音视频数据供其播放.

Unity3d:使用uWebKit插件嵌入网页,网页中的flv视频无法播放

问题描述:unity3d程序,使用uWebKit插件嵌入网页,用来播放FLV视频,有的电脑可以正常播放,有的电脑在网页中播放不了ps:网页中的播放器用的是player.swf解决方案:是由于网页中的播放器播放FLV需要Flash Player的支持,1.安装非IE内核版的Flash Player <ignore_js_op> 2.导入Flash Player dll到unity程序中的uWebKit插件文件夹下面NPSWF32_13_0_0_182.dll<ignore_js_op>

在IIS6中FLV不能播放

故障:Flv文件在本地能播放,上传到服务器上不能播放. 原因:WIN2003加强了IIS6的MIME验证,一切未注册扩展文件格式统统显示404错误. 解决办法:在IIS服务器上添加对.FLV文件的支持,操作步聚如下: 1.打开IIS下的本地计算机,选择网站右键属性,打开HTTP头的MIME类型 2.新建扩展名".FLV”,MIME类型值为"flv-application/octet-stream” 3.启动IIS服务器. 可实现WIN2003 IIS6支持播放FLV的功能.