我有一个问题,如果将音频文件作为 src 属性直接添加到 html5 源代码中,我可以播放它,但如果我尝试在运行时设置 src,它不会播放。
最初我有以下包含一些音频标签的 HTML:
<audio id="audio1" controls preload="none" src="http:/theurl/clip1.mp3"></audio>
<audio id="audio2" controls preload="none" src="http:/theurl/clip2.mp3"></audio>
使用以下函数播放剪辑,该函数使用 id 和剪辑 url 调用:
function audioClick(id, clip) {
var audio = document.getElementById(id);
if (audio.paused) {
audio.play();
}
else {
audio.pause();
audio.currentTime = 0;
}
}
这可行,当用户点击页面的相关部分时,会播放相应的音频文件,但问题是浏览器需要大约 3-4 秒来加载页面,这太长了。我已经找到了延迟的原因是由于 src 属性是远程文件。并且将 preload 设置为“none”或“metadata”并不能加快速度。
所以为了解决这个问题,我想在运行时设置 src,所以将函数更改为:
function audioClick(id, clip) {
var audio = document.getElementById(id);
if (audio.paused) {
audio.setSrc(clip);
audio.load();
audio.play();
}
else {
audio.pause();
audio.currentTime = 0;
}
}
我尝试将html设置为此
<audio id="audio1" controls></audio>
<audio id="audio2" controls></audio>
但有两个问题:1) 音频不播放 2) 控件显示初始消息说文件无法播放
我没有在控件中显示无法播放文件的消息,因此我将 html 更改为:
<audio id="audio1"></audio>
<audio id="audio2"></audio>
但是文件不播放的问题仍然存在。
以这种方式完成后,为什么音频文件不播放?