加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash – 如何使用play2()函数,以执行视频的快速流切换?

发布时间:2020-12-15 19:53:21 所属栏目:百科 来源:网络整理
导读:我目前正在开发一个具有分辨率切换功能的Flash网络播放器。我试图利用NetStream类的play2()函数在Actionscript。 我遇到的问题是视频不会快速更改。对于熟悉play2()函数的人,我相信播放器正在执行“标准开关”,而不是“快速开关”。 The documentation say
我目前正在开发一个具有分辨率切换功能的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状态事件。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读