您的位置:首页 > 其它

判断一个视频播放结束

2012-05-08 12:52 441 查看
其实下面那篇参考文章提到的问题眼下对我来讲意义不大。因为我需要做的事情只是当一个视频在播放中被中断时,进行一些必要的清理工作,比如释放资源。

通常播放本地磁盘上的flv/f4v文件的代码写法是:

this._video = new Video();
this._connection = new NetConnection();
this._connection.connect(null);
this._stream = new NetStream(this._connection);
this._video.attachNetStream(this._stream);
this._clientObject = new Object();
this._clientObject.onMetaData = this.metaDataListener;
this._clientObject.onXMPData = this.XMPDataListener;
this._clientObject.onTextData = this.XMPDataListener;
this._stream.client = this._clientObject;
this._stream.addEventListener(NetStatusEvent.NET_STATUS, this.netStreamStatusHandler);
this._stream.addEventListener(IOErrorEvent.IO_ERROR, this.netStreamIOErrorsHandler);
this._stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, this.netStreamAsynErrorsHandler);
this.addChild(this._video);
this._stream.play(this._file);


当将_video从playlist中移走,或者当前播放的视频文件已经播放完——即收到Stream.Play.Stop事件——都不会令NetStream关闭与这个资源的链接,所以一定要呼叫_stream.close(),当然建议在这个操作前做判断if(this._stream),以免收到空引用的异常。

在close()被执行之后,当前播放中的视频会被终止,并且Flash的播放器(AIR)会释放这个视频文件的资源给windows,于是该视频文件就可以被其他软件使用,也可以被删除或重写。

正常来讲,播放一个视频文件的过程中收到的NetStatus事件的顺序是:

NetStream.Play.Start
NetStream.Buffer.Full
NetStream.Buffer.Flush
NetStream.Buffer.Flush
.......
NetStream.Buffer.Empty
NetStream.Buffer.Flush
NetStream.Play.Stop


Refs:

http://huisecheng.com/blog/2011/07/netstream%E7%9C%9F%E6%AD%A3%E7%9A%84%E6%92%AD%E6%94%BE%E5%AE%8C%E6%AF%95%E5%88%A4%E6%96%AD-as3/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐