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


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

8 86

8 ответов:

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

аудио тега paused собственность. Если он не приостановлен, то он играет.

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

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

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

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

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.

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

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

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

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

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

или

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

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

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

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

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