0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Web Audioで音が鳴らなかったことを検知する

Posted at

課題

Web Audioで、音が鳴らなかったことを検知したい。

  • ユーザー操作が行われていない時に起こる警告で鳴らない
  • その他何らかの理由で鳴らない
    この1個目ってキャッチする方法ないのかな?

解決

今回は再生する音声データが短かったので、endedイベントが時間内に呼ばれたかどうかで判断した。実際に再生されていないのに、endedが呼ばれることはない模様。

play(context: AudioContext, err?: () => void, success?: () => void) {
  const audioBuffer = ; //任意の音声データ
  const audioBufferDuration = ; //その秒数

  const waitTime = (audioBufferDuration * 1000) + 500;
  const errorFeedback = setTimeout(() => {
    err?.();
  }, waitTime);

  const src = context.createBufferSource();
  src.addEventListener('ended', (e) => {
    clearTimeout(errorFeedback);
    success?.();
  });

  src.buffer = audioBuffer;
  src.connect(context.destination);
  src.start();
  // どこかでstop, disconnectすること
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?