HTML5   发布时间:2022-04-26  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了YouTube HTML5 API – 在轮询播放器当前时间时,是否可以获得更好的时间分辨率?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在寻找一个解决方案,但我还没有找到它.@R_371_9616@需要使用player.getCurrentTime()轮询YouTube视频对象以驱动一些屏幕动画.使用Flash API这很棒,因为我们可以以40ms的间隔(25 FPS)轮询播放器并获得非常准确的当前播放器时间值.我们现在已经开始使用iFrame API,遗憾的是它不允许任何接近该准确度的任何内容.我做了一些研究,似乎因为它是一个iFrame,postmessage用于将玩家状态暴露给player.getCurrentTime()调用.不幸的是,这个帖子消息事件很少被触发 – 有时低至每秒4次.更糟糕的是,消息触发的实际速率似乎取决于浏览器的渲染引擎.

有人知道是否有可能强制渲染引擎更频繁地触发这些消息,以便可以实现更长的时间分辨率来轮询播放器?我试requestAnimationFrame并没有解决问题.有没有人成功地让iFrame播放器更频繁地报告更准确的时间?

@H_673_4@

解决方法

我已经为我原来的问题想出了一个解决方法.我写了一个简单的补间函数,它将以我想要的频率轮询iFrame播放器并插入两者之间的时间瞬间.播放器本身仅每250毫秒左右更新一次当前时间,具体取决于渲染引擎和平台.如果您更频繁地轮询它,它将在几个连续的轮询中返回相同的当前时间值.但是,如果应用某些逻辑,则可以检测播放器何时返回新的当前时间并相应地更新您自己的计时器.我在一个间隔为25毫秒的定时器上运行以下功能.在每次迭代中,我向当前时间添加25毫秒,除非我检测到播放器报告的当前时间的变化.在那种情况下,我用新的“实际”当前时间更新我自己的计时器.当你这样做的时候可能有一个小的跳跃或非线性,但是如果你以足够高的速率轮询玩家,这应该是难以察觉的.
window.seTinterval(tween_time,25);

    function tween_time() {

        time_update = (ytplayer.getCurrentTime()*1000)

        playing=ytplayer.getPlayerState();

            if (playing==1){

                if (last_time_update == time_updatE)
                {
                    current_time_msec += 25;
                }

                if (last_time_update != time_updatE)
                {
                    current_time_msec = time_update;
                }       

            }


            do_my_animations();


        last_time_update = time_update;

    }
@H_673_4@ @H_673_4@

大佬总结

以上是大佬教程为你收集整理的YouTube HTML5 API – 在轮询播放器当前时间时,是否可以获得更好的时间分辨率?全部内容,希望文章能够帮你解决YouTube HTML5 API – 在轮询播放器当前时间时,是否可以获得更好的时间分辨率?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。