我们使用旧的YouTube闪存API构建了一个应用程序,该应用程序使用player.getCurrentTime()轮询播放器的当前时间。我们目前以 40 毫秒的间隔轮询播放器,以便以 25 fps 的速度更新屏幕组件。此 API 在 iOS 上不受支持,因此我们测试了 HTML5 API。似乎我们不能使用 HTML5 API 轮询 40 毫秒的频率。它似乎在大约 100 毫秒的轮询间隔中达到最大值,迫使我们的屏幕更新非常生涩。这是HTML5 API的已知限制,还是有办法以更精细的间隔轮询播放器?
您使用什么函数进行轮询?如果您使用的是 setInterval 或 setTimeout,您可以查看使用 requestAnimationFrame 是否获得较少的生涩性能。
不过,无论如何,这可能无关紧要;iframe API(是唯一提供HTML5播放的API)没有对播放器当前时间的精细访问。事实上,iframe 内部的播放器只执行一个 postMessage 来更新每秒 5-6 次可通过 getCurrentTime 访问的时间,因此轮询频率高于此频率只会浪费 CPU 周期。(我不确定他们为什么这样做,因为默认情况下HTML5视频每秒更新其当前时间约50次)。