HTML5 sprawdzić, czy dźwięk jest odtwarzany?

Jaki jest javascript api do sprawdzania, czy element audio html5 jest obecnie odtwarzany?

Author: Harry, 2012-02-25

8 answers

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

Znacznik Audio ma właściwość paused. Jeśli nie jest wstrzymana, to gra.

 116
Author: Niet the Dark Absol,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-25 13:32:01

Możesz sprawdzić czas trwania. Jest odtwarzany, jeśli czas trwania jest dłuższy niż 0 sekund i nie jest wstrzymywany.

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,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-04 20:10:09
document.getElementsByTagName('audio').addEventListener('playing',function() { myfunction(); },false); 
Powinno wystarczyć.
 9
Author: projectxmatt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-24 20:47:27

Chociaż jestem naprawdę spóźniony do tego wątku, używam tej implementacji, aby dowiedzieć się, czy dźwięk jest odtwarzany:

service.currentAudio = new Audio();

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

Myślę, że większość FLAG na elemencie audio jest oczywista poza stanem ready, o którym można przeczytać tutaj: MDN HTMLMediaElement.readyState .

 5
Author: Hassan Mahmud,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-08 13:38:07

Wypróbuj tę funkcję! Odtwarzanie dźwięku nie zostanie wykonane, jeśli pozycja jest początkiem lub końcem

function togglePause() {
     if (myAudio.paused && myAudio.currentTime > 0 && !myAudio.ended) {
         myAudio.play();
     } else {
         myAudio.pause();
     }
}
 3
Author: Nidlol Masyhud,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-30 21:09:43

Aby sprawdzić, czy dźwięk jest naprawdę zacząć odtwarzać, zwłaszcza jeśli masz strumień, trzeba sprawdzić audio.played.length do 1. Będzie to 1 tylko wtedy, gdy dźwięk naprawdę zaczyna Dźwięki. W przeciwnym razie będzie 0. To bardziej jak hack, ale nadal działa nawet w przeglądarkach mobilnych, takich jak Safari i Chrome.

 0
Author: Alex Ivasyuv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-16 10:38:50

Możesz użyć zdarzenia onplay.

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

Lub

var audio = document.querySelector('audio');
audio.addEventListener('play', function() { /* do something */ };
 0
Author: Ricardo Ferreira,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-08 03:56:42

Chociaż nie ma metody zwanej isPlaying lub czegoś podobnego, istnieje kilka sposobów, aby to osiągnąć.

Ta metoda pobiera % postępu podczas odtwarzania dźwięku:

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 + '%';
}

Jeśli procent jest większy niż 0 i mniejszy niż 100, gra, w przeciwnym razie jest zatrzymywany.

 -2
Author: Todd Moses,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-28 14:07:33