Comment puis-je forcer un élément audio HTML5 à mettre en mémoire tampon un morceau entier?
Je suis le développement d'un serveur local qui sera diffuser de l'utilisateur des fichiers audio afin qu'ils puissent y accéder via un navigateur web en utilisant le HTML5 audio de l'objet. Comme ces fichiers sont sur l'ordinateur de l'utilisateur, j'attends les fichiers à être mis en mémoire tampon complètement quand ils sont chargés, mais pour certains des fichiers volumineux, les chansons ont tamponné une partie du chemin, puis s'arrêter et reprendre la mise en mémoire tampon quelque temps plus tard.
Ma question est: comment puis-je la force de l'objet audio tampon de l'ensemble de la chanson à la fois? Puis-je le faire à partir de javascript, dois-je définir un attribut de l'objet audio, ou est-il autre chose que je peux faire?
source d'informationauteur George
Vous devez vous connecter pour publier un commentaire.
La solution que j'ai trouvé est celle-ci:
Lire le fichier et de le mettre en pause de 10 ms plus tard, alors que le navigateur de la mémoire tampon de l'ensemble de la chanson.
Vous pouvez utiliser le
load()
méthode. Fondamentalement forcespreload="auto"
. Mais il ne sera probablement pas le tampon de l'ensemble de la chose.J'ai eu le problème que l'audio n'était pas préinstallé sur des appareils mobiles (même avec
preload=auto
), mais cette méthode a fonctionné.http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dfnReturnLink-2
Une autre option consiste à charger les données à partir d'un XMLHttpRequest comme un blob binaire et de définir les
<audio>
de l'élémentsrc
attribut à la goutte d'URI.(Personnellement, je n'aime pas vraiment la lecture/pause hack.)
Vous pouvez définir le preload="auto" de l'attribut. Il n'est pas garanti de faire quoi que ce soit, mais il est censé dire à l'agent utilisateur de tampon autant qu'il veut sans se soucier de l'extrémité distante. http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#attr-media-preload