HTML5 проверить, воспроизводится ли звук? - PullRequest
101 голосов
/ 25 февраля 2012

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

Ответы [ 8 ]

131 голосов
/ 25 февраля 2012
function isPlaying(audelem) { return !audelem.paused; }

Аудио тег имеет свойство paused.Если он не приостановлен, то он играет.

33 голосов
/ 02 января 2013

Вы можете проверить продолжительность.Играется, если продолжительность больше 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.

}
10 голосов
/ 25 февраля 2012
document.getElementsByTagName('audio').addEventListener('playing',function() { myfunction(); },false); 

Должен сделать свое дело.

9 голосов
/ 08 сентября 2017

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

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 .

3 голосов
/ 30 января 2015

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

function togglePause() {
     if (myAudio.paused && myAudio.currentTime > 0 && !myAudio.ended) {
         myAudio.play();
     } else {
         myAudio.pause();
     }
}
0 голосов
/ 08 сентября 2018

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

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

или

var audio = document.querySelector('audio');
audio.addEventListener('play', function() { /* do something */ };
0 голосов
/ 16 февраля 2018

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

0 голосов
/ 25 февраля 2012

Хотя нет метода 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, он играет, иначе он остановлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...