HTML5でオーディオが再生されているかどうかを確認しますか?


回答:


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

Audioタグにはpausedプロパティがあります。一時停止していない場合は、再生中です。


止まるところがないため、これはクリーンなソリューションです。
トッドモーゼス

11
それが始まらない場合はどうなりますか?
ハリー

30
これは間違った答えです。私はそれで作業していますが、最初の開始前に.pausedはfalseです。
Tomas

2
@トムあなたはjsbinを持っていますか?私はこれを試しました、そしてそれは正解のようです。
ハリー

3
@ハリー私はそれをもっといじってみました、そしてそれはいくつかのブラウザではそれが機能するようで、それはいくつかはそうではないようです。実装次第ではないでしょうか。しかし、chromeとfirefoxのすべての最新の更新では機能するようですので、この回答は最新の実装に適しています。
トーマス

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コードを使用しています。再生ボタンは再生と一時停止ボタンです

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

1
その後、それは再生されません。
トッドモーゼス

これは、バッファリングされた量のみを検出します。たとえば、オーディオ要素がデータのバッファリングを開始したが、十分なデータがないために再生を開始していない場合でも、このメソッドはtrueを返すことができます。または、要素が再生の一部としてデータをバッファし、その後一時停止した場合。
dhasenan-2012

getElementsByTagName( 'myVideo')?getElementById( 'myVideo')
Lucky Soni

2
Em ...なぜマイナス?素晴らしいアイデアですが、良く書かれていません。リアルタイムオーディオ(WebRTC)が.pausedで再生されているかどうかを確認するにはどうすればよいですか?バッファチェックのみ。マイナスに値しない。私は賛成です。
igorpavlov
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.