AS3.0中netstream的一些不足之处!!!

在AS3.0中,使用NetStream.seek()操作FLV视频时,遇到在视频结尾附近出现NetStream.Seek.InvalidTime错误,导致视频无法继续播放。原因是外部加载的视频不能精确seek,只能跳转到最近的关键帧。当尝试seek超过最后一个可跳转帧时,会触发错误。解决方法是获取并使用NetStream.Seek.InvalidTime事件的details属性来确定最后一个有效跳转位置。另外,NetStream.time属性在seek后不会立即更新,需要额外处理。
摘要由CSDN通过智能技术生成

 文章的由来:当用seek()擦洗视频的时候,发现每当跳转到flv视频接近结尾的时候的时候(flv视频用的外部载入的方式,而不是流媒体的方式),大概相差几帧到几十帧的样子,就会接受到NetStream.Seek.InvalidTime,然后奇怪的事情发生了,视频不会再往下播放了,而是卡在了这帧视频。百思不得其解下上网查找,通过看了一老外的博客,才发现NetStream原来大有文章。

问题的产生原因:开始想到是flv视频的元数据(通过onMetaData取得)里有一个canSeekToEnd(一个布尔值,如果 FLV 文件是用最后一帧(它允许定位到渐进式下载
影片剪辑的末尾)上的关键帧编码的,则该值为 true。如果 FLV 文件不是用最后一帧上的关键帧编码的,则该值为 false。),难道是它作怪?赶紧打印之,发现此只是true。排除这个可能。最后看到一老外的博文(http://www.brooksandrus.com/blog/2008/11/05/3-years-later-netstream-still-sucks/),才知道NetStream坑了多少兄弟(还学了英文,知道了suck有烂的意思~)。下面就仔细分析下。

1.大家都知道,外部载入的视频不能精确seek(),当你seek到T时,它会寻找离T最近的关键帧,从这个关键帧开始继续播放。但是不是每一帧都是关键帧,也就是说不是每一帧都可

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值