<video> 在火狐上停止时很快黑屏



我有一个简单的网页,包含HTML 5<video>元素和简单的Javascript,用于创建在视频之间切换的链接,并使每个视频在预定时间停止。

它在Chrome 94、Edge 99和Vivaldi 4.3上运行良好(我在Windows 10上(
在我的Firefox 91.7esr中,但是,当视频停止时(在停止时间或结束时(,<strong]屏幕通常会熄灭约1秒>。之后,一切正常进行
是整个屏幕变黑,而不仅仅是Firefox窗口或页面上的<video>元素。

这种情况大约有三分之一的时间是不规则的(当视频开始时,这种情况发生的频率也要低得多(
为什么

网页和视频是本地文件
无论Firefox中的硬件加速是打开还是关闭,都会产生这种效果
重新启动后也会发生这种情况。

这是各自的代码:

<!DOCTYPE html>
<html>
<body>
<video id="pomalevi-video" height=540 controls>
Your browser does not support the video tag.
</video>
<br>
<button onclick="pmlv_speed(pmlv_video, 1.0)">1.0x</button>
<button onclick="pmlv_speed(pmlv_video, 1.7)">1.7x</button>
<button onclick="pmlv_speed(pmlv_video, 2.0)">2.0x</button>
<p onclick='pmlv_switch_to(1)'>start video 1</p>
<p onclick='pmlv_switch_to(2)'>start video 2</p>
<script>
var pmlv_video = document.getElementById("pomalevi-video")
var pmlv_video_idx = 1
var pmlv_stoptimes = [[5.1, 8.5, 11.9], [17.0, 20.4]]  // list of list of floats: stop times in seconds
function pmlv_pause_at_stoptimes() {
for (var t of pmlv_stoptimes[pmlv_video_idx-1]) {
if(pmlv_video.currentTime >= t && pmlv_video.currentTime <= t+0.5) {
pmlv_video.pause()
pmlv_video.currentTime += 0.5
}
}
}
function pmlv_speed(obj, factor) {
obj.playbackRate = factor
}
function pmlv_switch_to(i, play=true) {
pmlv_video.src = "v" + i + ".mp4"
pmlv_video_idx = i  // select the relevant stoptimes
pmlv_video.load()
if (play) {
pmlv_video.play()
}
}
pmlv_video.addEventListener("timeupdate", pmlv_pause_at_stoptimes)
pmlv_switch_to(1, false)
</script>
</body>
</html>

问题与我的HTML或Javascript无关。相反,这似乎是一个硬件问题

  • 问题发生在连接的外部监视器上通过连接到我的笔记本电脑,首先是使用USB-C的Icy Box IB-DK2403-C扩展坞,然后通过HDMI连接
  • 当我在笔记本电脑的内部屏幕上播放视频时,问题仍然存在,但被涂黑的仍然存在外部监视器,而不是具有Firefox窗口的内部监视器
  • 如果我将显示器直接连接到笔记本电脑的HDMI输出,而不是通过扩展坞,问题消失了
  • 此外,设置似乎对音频启动/停止也很敏感还有:当Windows通知时,我看到屏幕变黑了播放了声音
  • 但是视频在关闭声音的情况下仍然会产生效果在<video>元素的控制中,因此显然音频和视频启动或停止可能会导致停电。奇怪
  • 为什么其他浏览器不受此问题影响?不知道。(欢迎提示!(

我没有更快地理解这一点的原因是我在一天后才开始测试我的应用程序我已经开始使用扩展坞了。我还没有注意到其他时候发生的停电。

最新更新