gpt4 book ai didi

iphone - HTML5 视频 - 当前时间在 iPhone 上设置不正确

转载 作者:太空宇宙 更新时间:2023-11-04 13:35:00 25 4
gpt4 key购买 nike

我有一个基本的 HTML5 视频设置,我从中加载四个视频之一。我遇到的问题是,当我加载下一个视频时,它会从之前的时间位置继续播放。设置 currentTime 属性的努力似乎要么短暂存在,要么完全被忽略。

我已将监听器添加到事件集合中,并且每个事件中都有这样的内容;

myPlayer.addEventListener("loadeddata", function() {
console.log(" loadeddata: before = " + myPlayer.currentTime);
myPlayer.currentTime = 0.1;
console.log(" loadeddata: after = " + myPlayer.currentTime);
}, false);

有时我会看到某个事件的时间发生变化,但没有正确显示;

durationchange: before = 19.773332595825195
durationchange: after = 0.10000000149011612

loadedmetadata: before = 0.10000000149011612
loadedmetadata: after = 19.773332595825195

loadeddata: before = 19.773332595825195
loadeddata: after = 0.10000000149011612

canplay: before = 0.10000000149011612
canplay: after = 19.773332595825195

有时它甚至似乎根本没有凝固;

durationchange: before = 50.66666793823242
durationchange: after = 50.66666793823242

loadedmetadata: before = 50.66666793823242
loadedmetadata: after = 50.66666793823242

loadeddata: before = 50.66666793823242
loadeddata: after = 50.66666793823242

canplay: before = 50.66666793823242
canplay: after = 50.66666793823242

这似乎与问题 here 相似但似乎没有任何解决办法。以前有人在 iPhone 上遇到过这个问题吗?

最佳答案

TL;DR:更改 loadeddata 事件的 currentTime。这也适用于音频。

它看起来像 Safari(我在 Safari 11.1 上仍然遇到这个问题)是 Safari 不允许 currentTime 在第一次加载视频时更改,如果它没有加载帧对于那个 currentTime 呢。更大的问题是:错误的解决方案可能会破坏 Chrome(也可能破坏其他浏览器)。

幸运的是,我们有很多事件可以在媒体加载时监听:

During the loading process of an audio/video, the following events occur, in this order:

  1. loadstart
  2. durationchange
  3. loadedmetadata
  4. loadeddata
  5. progress
  6. canplay
  7. canplaythrough

-W3Schools (I know it's not a preferred source, but I couldn't find the same info on MDN)

我尝试在不同的事件上调整 currentTime,但在前 3 个事件上,Safari 会将时间移回 0;在 5 和 6 上,它似乎阻止了视频在 Chrome 中播放,因为它会卡在 currentTime (我本可以解决这个问题,但我认为有更好的解决方案)。

(我不想加载整个文件才能到达正确的位置,因为我想支持大量视频。所以 canplaythrough 不是我的选择。)

loadeddata 事件的描述如下:

The loadeddata event is fired when the first frame of the media has finished loading.

-MDN

当我更改 loadeddata 上的 currentTime 时,Safari 可以判断框架已加载且可用,并且会正确更新。它也不会导致 Chrome 在播放时卡在一个地方。

音频的问题和解决方案是相同的。

关于iphone - HTML5 视频 - 当前时间在 iPhone 上设置不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18266437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com