2016-07-15 40 views
1

私のhtmlにオーディオタグがあり、その中に.wavが入っています。 Javascriptでは、オーディオタグを選択してwavを再生します。これはキーボードのキーを使ってトリガーします。 私が達成しようとしているのは、たとえば各Aキーを押すと、最初から.wavを再生/再生します)Javascriptでオーディオを一時停止すると「ポップノイズ」が鳴る

オーディオの再生は問題なく動作します一時停止する。しかし、私はポップノイズを取得し、再生中の.wavを直接中断します。

var audio = document.getElementById(sound); 

if (!isPlaying(audio)) { 
    audio.play();  // works 
} else { 
    audio.pause(); // pops on this line; I checked with commenting below lines. 
    audio.currentTime = 0; 
    audio.play(); 
} 

私はthis answerを見つけた、と私は即座に0にボリュームを設定するので、私の知る限り理解し、それが起こっています。私の場合は分かりませんでした。私はまた、audio.muted = trueを見つけ

良いアプローチをするsetIntervalとフェーダーをされていない使用して、ボリュームを一時停止する前にそれを使用してみました(とだけオーディオを再生する前にaudio.muted = falseを使用)が、これはまた、ポップノイズを与えると信じて


更新:

私はこの問題を回避するためにフェードアウトを使用する必要があると思います。オーディオを即座にフェードアウトさせる方法はありますか?

+0

volumeプロパティをアニメーション化する.animate()を使用することができないのはなぜ*良い方法はないでしょうか? –

+0

私は言ったように私は確信していません。私は3秒のオーディオだけでなく、0.2秒のショットを再生する必要があります。だから私は間隔を設定し、それに応じてフェードアウトをトリガーすると、3秒と0.2秒の両方のオーディオに対応するジェネリックコードが得られないと思ったのです。それが良いアプローチであれば、明確にしてください。 – senty

答えて

2

更新:

私はこの問題を回避するためにフェードアウトを使用する必要があると思います。 オーディオを即座にフェードアウトする方法はありますか?

あなたは私のsetIntervalでフェーダーを使用して信じている*現在の値から0

var audio = $("audio"); 
 
$("button").click(function() { 
 
    if (audio[0].volume > 0) { 
 
    audio.animate({volume:0}); 
 
    // call `.pause()` here 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<audio controls src="https://upload.wikimedia.org/wikipedia/commons/6/6e/Micronesia_National_Anthem.ogg"></audio> 
 
<button>fade out audio</button>

+0

これは非常にクールです、このアニメーションは 'controls = true'を必要としますか? – zer00ne

+0

@ zer00ne _ "このアニメーションは' controls = true'が必要ですか?_いいえ – guest271314

+0

私はボリュームをあらかじめ設定していません。それを元に戻すためのデフォルトの音量レベルは何ですか? – senty

関連する問題