2016-05-26 11 views
2

私は、ブラウザで繰り返し再生する必要があるオーディオクリップをたくさん持っています。audio.play()を呼び出すと、ブラウザでHTML5オーディオがプリキャッシュされますか?

私が理解する限り、audio.play()が呼び出されるまで、audio = new Audio(src)は実際のソースファイルでIOを実行しません。

以下のコードでは、ブラウザのオーディオをキャッシュして待ち時間を最小限に抑えることはできますか?

audio = new Audio(src); 
audio.volume = 0; 
audio.play(); 

volume=0は、IOS上のもののようないくつかのSafariベースのブラウザで動作しないという事実から離れて、このアプローチのいずれかの欠点はありますか?

短いオーディオクリップをキャッシュする方が良いでしょうか?

+0

何audio.play 'について(); audio.pause(); 'メディア全体がプリロードされないかもしれませんが、おそらくレイテンシを減らすのに十分でしょう。 – Kaiido

答えて

2

あなたはautoとしてaudio要素のpreload属性を設定してみてくださいすることができます

audio = new Audio(src); 
audio.preload = 'auto'; 

デモ:

var aud = new Audio('http://upload.wikimedia.org/wikipedia/commons/5/5b/Ludwig_van_Beethoven_-_Symphonie_5_c-moll_-_1._Allegro_con_brio.ogg') 
 
aud.preload = 'auto' 
 
var bData = document.createElement('span') 
 
document.body.appendChild(bData) 
 
setInterval(() => bData.innerText = 'Buffered Time(in seconds): ' + (aud.buffered.length && aud.buffered.end(0)), 300)

+1

ええ、欠点は追加のHTTPコールと余分な帯域幅を使用することです。 – mido

+1

ブラウザはpreload属性を尊重することを余儀なくされていません。実際は、ほとんどのモバイルブラウザではプリロードされません。 – Kaiido

+1

@ccpizza、私はオーディオ用のタグを使用していない、バッファリングの進行状況を示すタグは無視することができます。 – mido

関連する問題