javascript - 如何使用 html 中的音频标签始终完美地发出声音?
问题描述
我正在尝试在网络浏览器上使用音频标签发出声音,并且在大多数情况下都能正常工作。
但是,很少有声音从中途开始,或者不输出声音。(我不确定发生这种情况的情况)。有什么方法可以让声音始终完美?
我正在使用谷歌浏览器版本。74.0.3729.169 在带有嵌入式扬声器的 Windows 10 笔记本电脑上。
我尝试了以下方法,但无法解决此问题。
1) 使用 load() 并将回调方法放在 canplaythough 事件上以调用 play()。
2) 将 preload="auto" 放入音频标签
3)通过base64而不是URL将声音数据放入音频标签。
例如
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<audio id="audio-from-url" preload="auto" src="https://xxx/xxx/xxx.mp3">
</audio>
<button id="ringButton">ring</button>
<script>
button = window.document.getElementById('ringButton')
button.addEventListener("click", function(){
audioTag = document.getElementById("audio-from-url");
audioTag.load();
if (audioTag.readyState === 4) {
audioTag.play();
} else {
// call "play" after finished loading
audioTag.addEventListener('canplaythrough', function (e) {
audioTag.removeEventListener('canplaythrough', arguments.callee);
audioTag.play();
});
}
});
</script>
</body>
</html>
我希望用户每次都能听到没有缺陷的声音,这意味着可以听到完全相同的声音。
解决方案
推荐阅读
- python - Raspberry Pi 3B+ 通过 GPIO 事件在 3.5mm 插孔上获得静态噪声
- python - 如何使用python刷新excel
- google-cloud-platform - 如何在谷歌大查询中查询记录类型重复字段?
- vba - 如何在不打开工作簿的情况下从匹配多个条件的已关闭工作簿中提取数据?
- flutter - 如何实时更新数据库中的数据?
- visual-studio-code - 如何在远程开发中使用远程python解释器——VSCode中的ssh
- c# - 在 DataGridViewImageColumn 中显示具有空值的空单元格
- mysql - 无法获取分区以改变查询时间
- typescript - 如何在打字稿对象接口中键入字符串作为对象属性键?
- c# - 检查字符串是否处于正确的模式并区分它们