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

用来检查 html5音频元素是否正在播放的 javascript api 是什么?

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

应该能行。

虽然没有叫做 isPlay 或类似的方法,但是有几种方法可以实现这一点。

这个方法获得播放音频时的进度百分比:

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,则正在播放,否则停止。

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.


}

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

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

虽然我已经迟到了,但是我使用这个实现来判断声音是否在播放:

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

要检查音频是否真的开始播放,特别是如果您有一个流,需要检查 audio.played.length1。它将是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 */ };

我使用这个 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
});

试试这个代码:

    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();
}
}

我想知道这个代码是否能工作,结果出人意料地成功了:

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

或者你可以这样写:

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

如果您希望您的 IDE 在 JSfiddle 中烦扰您。

我是这么做的

    <button id="play">Play Sound</button>
<script>
var sound = new Audio("path_to_sound.mp3")
sound.loop = false;
var play = document.getElementById("play")
play.addEventListener("click", () => {
if (!isPlaying()) {
sound.play()
} else {
//sound.pause()
}
})


function isPlaying() {
var infoPlaying = false
var currentTime = sound.currentTime == 0 ? true : false
var paused = sound.paused ? true : false
var ended = !sound.ended ? true : false
var readyState = sound.readyState == 0 ? true : false
if (currentTime && paused && ended && readyState) {
infoPlaying = true
} else if (!currentTime && !paused && ended && !readyState) {
infoPlaying = true
}
return infoPlaying
}
</script>

我使用这个播放暂停音频按钮

    var audio=$("audio").get[0];
if (audio.paused || audio.currentTime == 0 || audio.currentTime==audio.duration){
//audio paused,ended or not started
audio.play();
} else {
//audio is playing
audio.pause();
}