gpt4 book ai didi

javascript - 如何在 canplay 事件中设置 HTMLMediaElement 的 .currentTime,调用播放并避免调度暂停事件?

转载 作者:行者123 更新时间:2023-11-29 21:01:24 24 4
gpt4 key购买 nike

设置.currentTime时的 HTMLMediaElementcanplay 内调用前的事件 .play() pause事件被调度。

尝试调用 .play() 时在 canplay 内设置后的事件 .currentTime并抛出错误

DOMException: The play() request was interrupted by a call to pause().

如何设置.currentTimecanplay 内或 canplaythrough HTMLMediaElement的事件不 dispatch pause事件,或如何调用.play()来自内部 pause从集合开始媒体播放的事件处理程序 .currentTime

<!DOCTYPE html>
<html>

<head>
</head>

<body>
<video preload="auto" controls></video>
<span></span>
<script>
const url = "https://mirrors.creativecommons.org/movingimages/webm/ScienceCommonsJesseDylan_240p.webm#t=10,15";

const video = document.querySelector("video");

let cursor = 10.5;

video.oncanplay = e => {
video.oncanplay = null;
video.currentTime = cursor;
console.log(e, video.currentTime, video.buffered.end(0));
video.play().catch(err => document.querySelector("span").textContent = err.message);
}

video.onpause = e => {
console.log(e, video.currentTime);
}

video.src = url;
</script>
</body>

</html>

最佳答案

你那里的错误真的很奇怪,我不确定它来自哪里,也不确定你遇到它的几率有多大。

如果我没记错的话,当你设置currentTime 属性。

所以他们会有点忘记它,并且表现得好像您已经过了 end 阈值并因此暂停了视频。

但真正奇怪的是,在尝试编写测试用例时,我发现这只发生在 canplay 事件中,只发生在这个视频中,并且只发生在时间范围内设置为 10,15

将其设置为 #t=10.0,15有效
将其设置为 #t=10,15.0有效
将它设置为任何其他值,它似乎有效 (不,我没有测试所有可能的值)
在另一个视频上将其设置为 #t=10,15有效
在同一视频上将其设置为 #t=10,15,但由其他服务器提供,不起作用...

  // changed the #t parameter
const url = "https://mirrors.creativecommons.org/movingimages/webm/ScienceCommonsJesseDylan_240p.webm#t=10.0,15";

const video = document.querySelector("video");

let cursor = 10.5;

video.oncanplay = e => {
video.oncanplay = null;
video.currentTime = cursor;
console.log(e, video.currentTime, video.buffered.end(0));
video.play().catch(err => document.querySelector("span").textContent = err.message);
}

video.onpause = e => {
console.log(e, video.currentTime);
}

video.src = url;
  <video preload="auto" controls></video>
<span></span>

所以对于真正的修复,我认为 https://bugs.chromium.org/p/chromium/issues/仍然是最好的方式,但我不确定他们会告诉你什么,因为这似乎与视频文件本高度度相关。

关于javascript - 如何在 canplay 事件中设置 HTMLMediaElement 的 .currentTime,调用播放并避免调度暂停事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46310031/

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