オーディオ ファイルを 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 属性がリモート ファイルであることが原因であるという遅延の理由を突き止めました。また、プリロードを「なし」または「メタデータ」に設定しても、速度は向上しません。
これを回避するために、実行時に 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>
しかし、2 つの問題がありました。1) オーディオが再生されない 2) ファイルを再生できないという最初のメッセージがコントロールに表示される
コントロールにファイルを再生できないというメッセージが表示されないので、html を次のように変更しました。
<audio id="audio1"></audio>
<audio id="audio2"></audio>
ただし、ファイルが再生されないという問題は残ります。
この方法でオーディオ ファイルが再生されないのはなぜですか?