我目前正在开发一个具有分辨率切换功能的Flash webplayer。我试图在Actionscript中利用NetStream类的play2()
函数。
我遇到的问题是视频切换不够快速。对于熟悉play2()
函数的人来说,我认为播放器执行的是"标准切换"
而不是"快速切换"
。
文档中提到,当偏移参数为-1时,会进行快速切换。但实际上,一旦接收到"NetStream.Play.Transition"
事件,播放器会等待直到达到ns.time + ns.bufferLength
所表示的时间后才执行切换。
我以为快速切换会清除缓存,但是通过检查ns.backbufferlength
,我发现所有内容仍然被缓存。此外,文档还提到:"当偏移量为-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;
}
}
}