[Javascript] HTML5 controlla se l'audio è in riproduzione?


Answers

Puoi controllare la durata. Sta giocando se la durata è superiore a 0 secondi e non è in pausa.

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.

}
Question

Qual è l'API di javascript per verificare se un elemento audio html5 è attualmente in riproduzione?




Per verificare se l'audio inizia effettivamente a essere riprodotto, soprattutto se si dispone di un flusso, è necessario verificare audio.played.length su 1 . Sarà 1 solo se l'audio è davvero un suono d'inizio. Altrimenti sarà 0 . È più simile a un hack, ma funziona ancora anche su browser mobili, come Safari e Chrome.




Mentre sono molto in ritardo con questa discussione, utilizzo questa implementazione per capire se il suono è in riproduzione:

service.currentAudio = new Audio();

var isPlaying = function () {
    return service.currentAudio
        && service.currentAudio.currentTime > 0
        && !service.currentAudio.paused
        && !service.currentAudio.ended
        && service.currentAudio.readyState > 2;
}

Penso che la maggior parte delle flag sull'elemento audio siano ovvie a parte lo stato ready che puoi leggere qui: MDN HTMLMediaElement.readyState .