J'utilise Chrome. Dans ma console d'outils de développement, j'ai essayé les solutions suivantes:
Tout fonctionne comme prévu sauf la dernière ligne. Pourquoi ne puis-je pas définir currentTime
dessus?
Aussi, en général, je trouve que toute cette histoire de HTML5 Audio n'est pas très fiable. Existe-t-il un wrapper javascript robuste qui retombe en flash?
Vous devez faire quelque chose comme ça (si vous utilisez jQuery)
$('#elem_audio').bind('canplay', function() {
this.currentTime = 10;
});
ou en Javascript
var aud = document.getElementById("elem_audio");
aud.oncanplay = function() {
aud.currentTime = 10;
};
La raison derrière cette configuration est que vous devez vous assurer que le l’audio est prêt à être lu .
J'ai eu le même problème, et la raison en était manquant en-têtes sur le fichier mp3, comme:
Content-Length, Content-Range, Content-Type
Vérifiez la configuration de votre serveur HTTP dans mon environnement de test (Chrome 69 sous Mac OS). Le paramètre currentTime la propriété de élément audio ne fonctionne que si la source audio est fournie par un serveur HTTP support connexion persistante .
Si le serveur HTTP que vous avez utilisé prend en charge la connexion persistante, vous trouverez (dans Chrome DevTool) le champ Connexion des en-têtes de réponse de votre source audio: keep-alive . En revanche, si la source audio est desservie par un serveur incompatible avec une connexion persistante, il y aura pas de champ Connexion dans les en-têtes de réponse.
Le code de statut de votre requête HTTP source audio sera également une référence, 206 Contenu partiel pour le serveur pris en charge avec une connexion persistante, 200 OK pour un serveur inférieur.
Pourquoi ne puis-je pas mettre
currentTime
dessus?
Impossible de reproduire currentTime
étant défini sur 0
après avoir défini sur 10
. Est-ce que 18.mp3
durée est inférieure à 10
?
var request = new XMLHttpRequest();
request.open("GET", "/assets/audio/18.mp3", true);
request.responseType = "blob";
request.onload = function() {
if (this.status == 200) {
var audio = new Audio(URL.createObjectURL(this.response));
audio.load();
audio.currentTime = 10;
audio.play();
}
}
request.send();
jsfiddle http://jsfiddle.net/Lg5L4qso/3/
Je suppose que "10" est plus long que la longueur de votre mp3.
Mais cela enregistre la longueur de mp3 au lieu de '0'.
Quelle est votre version de Chrome?