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

2024-01-04

我设置了一个基本的 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 https://stackoverflow.com/questions/14746384/html5-video-not-setting-the-current-time但似乎没有任何解决方案。有人在 iPhone 上遇到过这个问题吗?


TL;DR: change currentTime on the loadeddata事件。这也适用于音频。

看起来 Safari(并且问题在 Safari 11.1 上仍然出现)是 Safari 不允许currentTime如果视频尚未加载该帧,则在首次加载视频时进行更改currentTime然而。更大的问题是:错误的解决方案可能会破坏 Chrome(也可能破坏其他浏览器)。

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

在音频/视频的加载过程中,会按顺序发生以下事件:

  1. 加载启动
  2. 持续时间变化
  3. 加载的元数据
  4. 加载数据
  5. progress
  6. canplay
  7. 可以通关

-W3学校 https://www.w3schools.com/tags/av_event_loadeddata.asp(我知道这不是首选来源,但我在 MDN 上找不到相同的信息)

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

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

的描述loadeddata事件内容如下:

The loadeddata当媒体的第一帧完成加载时触发事件。

-MDN https://developer.mozilla.org/en-US/docs/Web/Events/loadeddata

当我改变的时候currentTime on loadeddata,Safari 可以判断框架已加载且可用,并且会正确更新。它也不会导致 Chrome 在播放时冻结在一个位置。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML5 视频 - iPhone 上的当前时间设置不正确 的相关文章

随机推荐