HTML5는 오디오가 재생되는지 확인합니까?


답변:


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

Audio 태그에는 paused속성이 있습니다. 일시 중지되지 않은 경우 재생 중입니다.


정지가 없기 때문에 이것은 깨끗한 해결책입니다.
Todd Moses

11
시작되지 않았다면?
해리

30
이것은 잘못된 대답입니다. 나는 그것을 가지고 일하고 있으며 처음 시작하기 전에 .paused는 false입니다.
Tomas

2
@Tom 당신은 jsbin이 있습니까? 나는 이것을 시도했고 정답 인 것 같습니다.
Harry

3
@Harry 나는 그것을 더 가지고 놀고 있었고 일부 브라우저에서는 작동하고 일부는 작동하지 않는 것처럼 보입니다. 나는 그것이 구현에 달려 있다고 생각합니다. 그러나 크롬 및 파이어 폭스의 모든 최신 업데이트에 대해 작동하는 것처럼 보이 므로이 답변은 최신 구현에 맞습니다.
Tomas

44

기간을 확인할 수 있습니다. 지속 시간이 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
개인적으로 나는 그것이 !myAudio.paused||!myAudio.currentTime더 나은 일 을 할 것이라고 믿습니다 .
m93a 2014 년

11
@ m93a 의미하지 !myAudio.paused || myAudio.currentTime않습니까?
MalcolmOcean 2014 년

5
예,이어야합니다 !myAudio.paused || myAudio.currentTime. 답장하지 않은 것 같습니다 ...
Parth

16

이 스레드에 정말 늦었지만이 구현을 사용하여 사운드가 재생되는지 확인합니다.

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 에서 읽을 수있는 준비 상태와는 별개로 분명하다고 생각 합니다.


잠긴 상태에서 iOS에서 오디오가 자동으로 일시 중지 된 경우 작동하지 않습니다.
shukshin.ivan

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

트릭을해야합니다.


5

이 기능을 사용해보십시오! 위치가 시작 또는 끝이면 오디오 재생이 실행되지 않습니다.

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

0

오디오가 실제로 재생되는지 확인하려면, 특히 스트림이있는 경우을 확인 audio.played.length해야 1합니다. 오디오가 실제로 시작 사운드 인 경우에만 1이됩니다. 그렇지 않으면 0. 해킹과 비슷하지만 Safari 및 Chrome과 같은 모바일 브라우저에서도 여전히 작동합니다.


0

onplay 이벤트를 사용할 수 있습니다.

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

또는

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

0

견인 버튼 재생 및 중지와 함께이 jquery 코드를 사용하고 있습니다. 재생 버튼은 재생 및 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
});

-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보다 작 으면 재생 중이고 그렇지 않으면 중지됩니다.


음, 중간에 오디오를 일시 중지하면 어떻게 되나요?
Niet the Dark Absol 2012

1
그러면 재생되지 않을 것입니다.
Todd Moses

이것은 버퍼링 된 양만 감지합니다. 예를 들어 오디오 요소가 데이터 버퍼링을 시작했지만 데이터가 충분하지 않아 재생을 시작하지 않은 경우이 메서드는 여전히 true를 반환 할 수 있습니다. 또는 요소가 재생의 일부로 데이터를 버퍼링 한 후 일시 중지 된 경우.
dhasenan

getElementsByTagName ( 'myVideo')? 나는 그것이 getElementById ( 'myVideo')이어야한다고 생각한다
Lucky Soni

2
엠 ... 왜 마이닝? 그래도 좋은 아이디어는 좋지 않습니다. .paused로 실시간 오디오 (WebRTC)가 재생되는지 어떻게 확인할 수 있습니까? 버퍼 검사에서만. 마이너스 할 가치가 없습니다. 나는 찬성합니다.
igorpavlov 2013
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.