2 votes

L'appel à audio.play() va-t-il précacher un fichier audio HTML5 dans le navigateur ?

J'ai un groupe de clips audio que je dois lire de manière répétée dans le navigateur.

D'après ce que je comprends, faire audio = new Audio(src) n'effectue aucune entrée/sortie sur le fichier source réel jusqu'à ce que audio.play() s'appelle.

Y a-t-il une garantie que le code ci-dessous mettra en cache l'audio dans le navigateur et minimisera la latence ?

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

Y a-t-il un inconvénient à cette approche en dehors du fait que volume=0 ne fonctionne pas dans certains navigateurs basés sur Safari, comme ceux d'IOS ?

Existe-t-il une meilleure approche pour la mise en cache de courts clips audio ?

2voto

mido22 Points 443

Vous pouvez essayer de régler le preload de l'attribut audio en tant qu'élément auto :

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

Démonstration :

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)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X