web-dev-qa-db-fra.com

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?

93
Harry
function isPlaying(audelem) { return !audelem.paused; }

La balise audio a une propriété paused. Si ce n'est pas en pause, alors il joue.

123
Niet the Dark Absol

Vous pouvez vérifier la durée. Il joue si la durée est supérieure à 0 secondes et s'il n'est pas 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.

}
32
Maxali
document.getElementsByTagName('audio').addEventListener('playing',function() { myfunction(); },false); 

Devrait faire l'affaire.

10
projectxmatt

Alors que je suis vraiment en retard sur ce fil, j'utilise cette implémentation pour savoir si le son est joué:

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, mis à part l'état prêt que vous pouvez lire ici: MDN HTMLMediaElement.readyState .

6
Hassan Mahmud

Essayez cette fonction! La lecture du son 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
Nidlol Masyhud

Pour vérifier si l'audio commence réellement à jouer, surtout si vous avez un flux, vous devez cocher audio.played.length à 1. Ce ne sera que 1 si l'audio est vraiment commencer sons. Sinon, ce sera 0. Cela ressemble plus à un hack, mais cela fonctionne toujours, même dans les navigateurs mobiles, comme Safari et Chrome.

0
Alex Ivasyuv

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
Ricardo Ferreira