HTML5 vérifier si l'audio est en cours de lecture?
Quelle est l'api javascript pour vérifier si un élément audio html5 est en cours de lecture?
8 answers
function isPlaying(audelem) { return !audelem.paused; }
La balise audio a une propriété paused
. S'il n'est pas mis en pause, alors il joue.
, Vous pouvez vérifier la durée. Il est en cours de lecture si la durée est supérieure à 0 secondes et qu'il n'est pas mis en pause.
var myAudio = document.getElementById('myAudioID');
if (myAudio.duration > 0 && !myAudio.paused) {
//Its playing...do your job
} else {
//Not playing...maybe paused, stopped or never played.
}
document.getElementsByTagName('audio').addEventListener('playing',function() { myfunction(); },false);
Devrait faire l'affaire.
Bien que je sois vraiment en retard sur ce fil, j'utilise cette implémentation pour savoir si le son joue:
service.currentAudio = new Audio();
var isPlaying = function () {
return service.currentAudio
&& service.currentAudio.currentTime > 0
&& !service.currentAudio.paused
&& !service.currentAudio.ended
&& service.currentAudio.readyState > 2;
}
Je pense que la plupart des drapeaux sur l'élément audio sont évidents en dehors de l'état prêt que vous pouvez lire ici: MDN HTMLMediaElement.readyState .
Essayez cette fonction! La lecture audio ne serait pas exécutée si la position est le début ou la fin
function togglePause() {
if (myAudio.paused && myAudio.currentTime > 0 && !myAudio.ended) {
myAudio.play();
} else {
myAudio.pause();
}
}
Pour vérifier si l'audio commence vraiment à jouer, surtout si vous avez un flux, vous devez vérifier audio.played.length
à 1
. Ce sera 1 seulement si l'audio est vraiment commencer les sons. Sinon sera 0
. Cela ressemble plus à un hack, mais cela fonctionne toujours même dans les navigateurs mobiles, comme Safari et Chrome.
Vous pouvez utiliser l'événement onplay.
var audio = document.querySelector('audio');
audio.onplay = function() { /* do something */};
Ou
var audio = document.querySelector('audio');
audio.addEventListener('play', function() { /* do something */ };
Bien qu'il n'y ait pas de méthode appelée isPlaying ou quelque chose de similaire, il existe plusieurs façons d'y parvenir.
Cette méthode obtient le % de progression pendant la lecture audio:
function getPercentProg() {
var myVideo = document.getElementsById('myVideo');
var endBuf = myVideo.buffered.end(0);
var soFar = parseInt(((endBuf / myVideo.duration) * 100));
document.getElementById("loadStatus").innerHTML = soFar + '%';
}
Si le pourcentage est supérieur à 0 et inférieur à 100, il joue, sinon il est arrêté.