web-dev-qa-db-fra.com

L'audio HTML ne peut pas définir l'heure courante

J'utilise Chrome. Dans ma console d'outils de développement, j'ai essayé les solutions suivantes:

 enter image description here

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?

20
Rajat

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

6
Mp de la Vega

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

2

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.

2
Bono Lv

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/

2
guest271314

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?

1
Arjenloeb