fun*_*iki 50 flash actionscript actionscript-3 netstream
我目前正在开发具有分辨率切换功能的Flash网络播放器.我试图play2()在Actionscript中使用NetStream类的函数.
我遇到的问题是视频不会很快改变.对于那些熟悉这个play2()功能的人,我认为玩家正在表演"standard switch"而不是表演"fast switch."
文档说,当offset参数为-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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 1
正如文档所述:“offset 的默认值为 -1,这将切换行为默认为标准。在这种模式下,服务器从接收到切换调用的点开始及时确定流之间的良好转换点,并且在那一点切换。”
因此,您必须将“offset”参数更改为高于当前播放时间(Netstream.time)的值。如果该值较小,则发送 NetStream.Play.Failed 状态事件。