Qual é a API javascript para verificar se um elemento de áudio html5 está sendo reproduzido atualmente?
Qual é a API javascript para verificar se um elemento de áudio html5 está sendo reproduzido atualmente?
Respostas:
function isPlaying(audelem) { return !audelem.paused; }
A tag Audio possui uma paused
propriedade Se não estiver em pausa, está sendo reproduzido.
Você pode verificar a duração. É reproduzido se a duração for superior a 0 segundos e não estiver em pausa.
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.
}
!myAudio.paused||!myAudio.currentTime
faria um trabalho melhor.
!myAudio.paused || myAudio.currentTime
?
!myAudio.paused || myAudio.currentTime
. Parece que nunca respondeu de volta ...
Enquanto estou realmente atrasado para este segmento, uso esta implementação para descobrir se o som está sendo reproduzido:
service.currentAudio = new Audio();
var isPlaying = function () {
return service.currentAudio
&& service.currentAudio.currentTime > 0
&& !service.currentAudio.paused
&& !service.currentAudio.ended
&& service.currentAudio.readyState > 2;
}
Eu acho que a maioria dos sinalizadores no elemento de áudio é óbvia, além do estado pronto, sobre o qual você pode ler aqui: MDN HTMLMediaElement.readyState .
document.getElementsByTagName('audio').addEventListener('playing',function() { myfunction(); },false);
Deve fazer o truque.
Experimente esta função! A reprodução de áudio não seria executada se a posição fosse o começo ou o fim
function togglePause() {
if (myAudio.paused && myAudio.currentTime > 0 && !myAudio.ended) {
myAudio.play();
} else {
myAudio.pause();
}
}
Para verificar se o áudio realmente está começando a ser reproduzido, especialmente se você tiver um fluxo, verifique audio.played.length
em 1
. Será 1 apenas se o áudio realmente iniciar sons. Caso contrário, será 0
. É mais um truque, mas ainda funciona em navegadores móveis, como Safari e Chrome.
você pode usar o evento onplay.
var audio = document.querySelector('audio');
audio.onplay = function() { /* do something */};
ou
var audio = document.querySelector('audio');
audio.addEventListener('play', function() { /* do something */ };
estou usando esse código jquery com o botão rebocar play and stop, o botão play é um botão play and pouse
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
});
Embora não exista um método chamado isPlaying ou algo semelhante, existem algumas maneiras de fazer isso.
Este método obtém a% de progresso enquanto o áudio está sendo reproduzido:
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 + '%';
}
Se a porcentagem for maior que 0 e menor que 100, está sendo reproduzida, caso contrário, será interrompida.