问题描述
我正在编写一个在线心理学实验。参与者必须观看一部短片并记住一些信息。为了分析数据,每个人都必须看同一部电影,所以如果人们暂停它就会有问题。因此,我禁用了所有控件并自动播放视频。
在 Chrome 上,这仅在播放器开始静音时才有效。所以我想在视频开始后立即自动打开声音。
我正在尝试将以下 html 与托管的视频一起使用 here
<!doctype html>
<html>
<head>
<Meta charset="UTF-8">
<Meta name="viewport" content="user-scalable=no">
</head>
<body style="width: 1000px; height: 800px; background-color: grey;">
<div class="container">
<div id="video-player"></div>
</div>
<script src="https://muse.ai/static/js/embed-player.min.js"></script>
<script>
const player = MusePlayer({
container:'#video-player',video: 'qhRjheS',width: 720,height: 480,autoplay: true,loop: true,volume: 0,style: 'no-controls',shortcuts: false,css: '*{pointer-events:none!important;}',});
player.on('timeupdate',function(time) {player.setVolume(100)});
</script>
</body>
</html>
这一行的问题所在:
player.on('timeupdate',function(time) {player.setVolume(100)});
这在控制台中有效,而视频正在运行,但如果将其放入脚本中,则会崩溃。
谁能想出自动打开声音的方法?如果电影开始后有一点延迟,那也没关系。
解决方法
作为一个实验(不是一个完整的解决方案),我会尝试这样的事情:
setTimeout(() => player.on('timeupdate',() => player.setVolume(100)),3000);
(我冒昧地将您的代码更改为使用箭头函数。)
我怀疑播放器没有立即准备好设置音量,需要一些时间才能完全设置好并准备就绪。我对 MusePlayer 并不特别熟悉,但我会查看文档并查看除了 'timeupdate'
事件之外是否还有其他事件,您希望在设置 'timeupdate'
的侦听器之前首先接收这些事件{1}} 个事件。
感谢 kshetline 的输入。 chrome 阻止自动播放对我来说确实是一个问题。但是,添加事件侦听器以在单击时启动电影是一种解决方法。我想自动启动是不可能的,但这样一来,一旦电影开始,所有其他控件仍然处于禁用状态。
document.body.addEventListener("click",function () {
player.play();
});