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?

Author: Harry, 2012-02-25

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.

 116
Author: Niet the Dark Absol, 2012-02-25 13:32:01

, 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.

}
 28
Author: Maxali, 2015-09-04 20:10:09
document.getElementsByTagName('audio').addEventListener('playing',function() { myfunction(); },false); 

Devrait faire l'affaire.

 9
Author: projectxmatt, 2012-02-24 20:47:27

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 .

 5
Author: Hassan Mahmud, 2017-09-08 13:38:07

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();
     }
}
 3
Author: Nidlol Masyhud, 2015-01-30 21:09:43

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.

 0
Author: Alex Ivasyuv, 2018-02-16 10:38:50

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 */ };
 0
Author: Ricardo Ferreira, 2018-09-08 03:56:42

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é.

 -2
Author: Todd Moses, 2013-10-28 14:07:33