flash – 如何使用play2()函数,以执行视频的快速流切换?
我目前正在开发一个具有分辨率切换功能的Flash网络播放器。我试图利用NetStream类的play2()函数在Actionscript。
我遇到的问题是视频不会快速更改。对于熟悉play2()函数的人,我相信播放器正在执行“标准开关”,而不是“快速开关”。 The documentation says that当偏移参数为-1时,发生快速切换。实际发生的是,虽然一旦接收到“NetStream.Play.Transition”事件,播放器将等待,直到达到由ns.time ns.bufferLength表示的时间,然后再执行切换。 我认为快速切换清除缓冲区,但在检查到ns.backbufferlength,我发现一切仍然缓存。还提到:“当offset为-1时,切换发生在netstream.time 3之后的第一个可用关键帧”,这就是为什么我感到困惑。 任何帮助/洞察这一事项将不胜感激。 这里是一段代码描述当前的情况(当用户点击更改为新的分辨率,YouTube风格时调用newStream()): public function newStream(address:String):void { var opts:NetStreamPlayOptions = new NetStreamPlayOptions(); opts.streamName = address; opts.transition = NetStreamPlayTransitions.SWITCH; opts.offset = -1; ns.play2(opts); } private function nsCallback(event:NetStatusEvent) { switch(event.info.code) { case "NetStream.Play.Transition": { trace("Current time (on Transition): " + ns.time,"Buffer: " + ns.bufferLength); var estTime:Number = ns.time + ns.bufferLength; trace("Estimated Completion Time: " + estTime); break; } } } 解决方法
如文档所述:“offset的默认值为-1,默认为标准切换行为,在这种模式下,服务器确定从接收到切换调用的时间点开始的流之间的良好转换点,开关在那一点“。
因此,您必须将“offset”参数更改为高于当前播放时间(Netstream.time)的值。如果值较小,则会发送NetStream.Play.Failed状态事件。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |