我目前正在开发具有分辨率切换功能的 Flash 网络播放器。我正在尝试play2()
在 Actionscript 中使用 NetStream 类的功能。
我遇到的问题是视频不会很快改变。对于那些熟悉该play2()
功能的人,我相信玩家正在执行 a"standard switch"
而不是 a"fast switch."
文档说当偏移参数为-1时,会发生快速切换。实际发生的情况是,一旦"NetStream.Play.Transition"
收到事件,玩家会等到ns.time + ns.bufferLength
到达 表示的时间,然后再执行切换。
我以为快速切换会清除缓冲区,但在检查到 时ns.backbufferlength
,我发现所有内容都仍在缓存中。它还提到:“当偏移量为-1时,切换发生在之后的第一个可用关键帧处netstream.time + 3
,”这就是我感到困惑的原因。
对此问题的任何帮助/见解将不胜感激。
这是一段描述正在发生的事情的代码片段(newStream()
当用户单击以更改为新分辨率,youtube 样式时调用):
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;
}
}
}