¿Cuál es la API de JavaScript para verificar si un elemento de audio html5 se está reproduciendo actualmente?
fuente
¿Cuál es la API de JavaScript para verificar si un elemento de audio html5 se está reproduciendo actualmente?
function isPlaying(audelem) { return !audelem.paused; }
La etiqueta de audio tiene una paused
propiedad. Si no está en pausa, entonces se está reproduciendo.
Puedes comprobar la duración. Se está reproduciendo si la duración es superior a 0 segundos y no está en 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
haría un mejor trabajo.
!myAudio.paused || myAudio.currentTime
?
!myAudio.paused || myAudio.currentTime
. Parece que nunca respondí ...
Si bien llegué muy tarde a este hilo, utilizo esta implementación para averiguar si se está reproduciendo el sonido:
service.currentAudio = new Audio();
var isPlaying = function () {
return service.currentAudio
&& service.currentAudio.currentTime > 0
&& !service.currentAudio.paused
&& !service.currentAudio.ended
&& service.currentAudio.readyState > 2;
}
Creo que la mayoría de las banderas en el elemento de audio son obvias, aparte del estado listo, que puede leer aquí: MDN HTMLMediaElement.readyState .
document.getElementsByTagName('audio').addEventListener('playing',function() { myfunction(); },false);
Debería hacer el truco.
¡Prueba esta función! La reproducción de audio no se ejecutará si la posición es el principio o el final
function togglePause() {
if (myAudio.paused && myAudio.currentTime > 0 && !myAudio.ended) {
myAudio.play();
} else {
myAudio.pause();
}
}
Para comprobar si el audio está realmente empezar a jugar, especialmente si usted tiene una corriente, necesidad de comprobar audio.played.length
a 1
. Será 1 solo si el audio es realmente sonidos de inicio. De lo contrario lo será 0
. Es más como un truco, pero aún funciona incluso en navegadores móviles, como Safari y Chrome.
puedes usar el evento onplay.
var audio = document.querySelector('audio');
audio.onplay = function() { /* do something */};
o
var audio = document.querySelector('audio');
audio.addEventListener('play', function() { /* do something */ };
Estoy usando este código jquery con el botón de remolque reproducir y detener, el botón de reproducción es un botón de reproducción y posicionamiento
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
});
Si bien no existe un método llamado isPlaying o algo similar, hay algunas formas de lograrlo.
Este método obtiene el% de progreso mientras se reproduce el audio:
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 + '%';
}
Si el porcentaje es mayor que 0 y menor que 100, se está reproduciendo; de lo contrario, se detiene.