HTML5检查音频是否正在播放?

时间:2012-02-24 20:00:57

标签: javascript html5 audio

用于检查html5音频元素当前正在播放的javascript api是什么?

11 个答案:

答案 0 :(得分:130)

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

音频标记具有paused属性。如果它没有暂停,那么它正在播放。

答案 1 :(得分:33)

您可以查看持续时间。如果持续时间超过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.

}

答案 2 :(得分:10)

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

应该做的伎俩。

答案 3 :(得分:8)

虽然我在这个帖子中已经很晚了,但是我使用这个实现来判断声音是否正在播放:

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

答案 4 :(得分:3)

试试这个功能! 如果位置是开头或结尾,则不会执行音频播放

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

答案 5 :(得分:1)

试试这个代码:

    var myAudio = document.getElementById("audioFile"); 

    function playAudio() { 
          //audio.play(); 
          //console.log(audio.play())
           if (myAudio.paused && myAudio.currentTime >= 0 && !myAudio.started) {
         myAudio.play();
         console.log("started");
     } else {
         myAudio.pause();
     }
}

答案 6 :(得分:0)

要检查音频是否真的开始播放,特别是如果您有音频,请检查audio.played.length1。仅当音频真的是开始声音时才会为1。否则将是0。它更像是一个黑客攻击,但即使在Safari和Chrome等移动浏览器中仍然有效。

答案 7 :(得分:0)

您可以使用onplay事件。

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

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

答案 8 :(得分:0)

在此jquery代码中使用拖曳按钮来停止和播放,播放按钮是播放和暂停按钮

const help_p = new Audio("audio/help.mp3");//Set Help Audio Name
$('#help_play').click(function() {//pause-Play
if (help_p.paused == false) {
  help_p.pause();//pause if playing
} else {
  help_p.play();//Play If Pausing
}
});

$('#help_stop').click(function() {//Stop Button
  help_p.pause();//pause
  help_p.currentTime = 0; //Set Time 0
});

答案 9 :(得分:0)

我想知道这段代码是否可行,结果令人惊讶:

if (a.paused == false) {
/*do something*/
}

或者你可以写成:

if (!a.paused == true) {
/*do something*/
}

如果你想让你的 IDE 在 JSfiddle 中惹恼你。

答案 10 :(得分:-2)

虽然没有名为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,则表示正在播放,否则会停止播放。