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.