it-swarm.com.de

HTML5 prüfen, ob Audio abgespielt wird?

Wie sieht die Javascript-API aus, um zu prüfen, ob gerade ein html5-Audioelement abgespielt wird?

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

Das Audio-Tag hat eine paused-Eigenschaft. Wenn es nicht pausiert ist, wird es abgespielt.

123

Sie können die Dauer überprüfen. Es wird abgespielt, wenn die Dauer mehr als 0 Sekunden beträgt und es nicht pausiert wird. 

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); 

Sollte den Trick tun.

10
projectxmatt

Während ich zu diesem Thread wirklich spät komme, verwende ich diese Implementierung, um herauszufinden, ob der Sound abgespielt wird:

service.currentAudio = new Audio();

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

Ich denke, die meisten Flags auf dem Audio-Element liegen auf der Hand, abgesehen vom Ready-Status, den Sie hier lesen können: MDN HTMLMediaElement.readyState .

6
Hassan Mahmud

Verwenden Sie diese Funktion! Die Audiowiedergabe wird nicht ausgeführt, wenn die Position Anfang oder Ende ist

function togglePause() {
     if (myAudio.paused && myAudio.currentTime > 0 && !myAudio.ended) {
         myAudio.play();
     } else {
         myAudio.pause();
     }
}
3
Nidlol Masyhud

Um zu prüfen, ob Audio wirklich abgespielt wird, insbesondere wenn Sie einen Stream haben, müssen Sie audio.played.length auf 1 überprüfen. Es wird nur 1 sein, wenn der Ton wirklich beginnt. Ansonsten ist 0. Es ist mehr wie ein Hack, aber das funktioniert auch in mobilen Browsern wie Safari und Chrome.

0
Alex Ivasyuv

sie können das Onplay-Ereignis verwenden.

var audio = document.querySelector('audio');
audio.onplay = function() { /* do something */};

oder

var audio = document.querySelector('audio');
audio.addEventListener('play', function() { /* do something */ };
0