HTML5 проверяет, воспроизводится ли звук?

Что javascript api для проверки того, играет ли в данный момент аудиоэлемент html5?

Ответ 1

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

Тег Audio имеет свойство paused. Если он не приостановлен, то он играет.

Ответ 2

Вы можете проверить продолжительность. Он воспроизводится, если продолжительность составляет более 0 секунд, и она не приостанавливается.

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.

}

Ответ 3

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

Должен сделать трюк.

Ответ 4

Хотя я действительно опаздываю к этой теме, я использую эту реализацию, чтобы выяснить, воспроизводится ли звук:

service.currentAudio = new Audio();

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

Я думаю, что большинство флагов на аудиоэлементе очевидны, кроме состояния готовности, о котором вы можете прочитать здесь: MDN HTMLMediaElement.readyState.

Ответ 5

Попробуйте эту функцию! Воспроизведение звука не будет выполняться, если позиция начинается или заканчивается

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

Ответ 6

Чтобы проверить, действительно ли звук начинает воспроизводиться, особенно если у вас есть поток, необходимо проверить audio.played.length в 1. Это будет 1, только если звук действительно запускает звуки. В противном случае будет 0. Это больше похоже на взлом, но это все еще работает даже в мобильных браузерах, таких как Safari и Chrome.

Ответ 7

Вы можете использовать событие onplay.

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

или же

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

Ответ 8

Хотя нет метода isPlaying или чего-то подобного, есть несколько способов сделать это.

Этот метод получает% прогресса при воспроизведении аудио:

function getPercentProg() {
    var myVideo = document.getElementById('myVideo');
    var endBuf = myVideo.buffered.end(0);
    var soFar = parseInt((endBuf / myVideo.duration) * 100);
    document.getElementById('loadStatus').innerHTML =  soFar + '%';
}

Если процент больше 0 и меньше 100, он играет, иначе он остановлен.