<audio>
タグにロードされたサウンドファイルからWebオーディオAPIを使用してボリュームメーター(脈動エフェクトとして)を作成しようとすると、このインジケータエフェクトはこのコードで正常に機能します私は再生中のオーディオから音量の変化を取り出すことができ、値を使ってjqueryを使って<div>
に不透明効果を適用します。ウェブオーディオAPIボリュームインジケータ - これ以上の音
しかし、スクリプトを読み込んだり、オーディオが再生されたり、音量が変化していたり、音が出なかったりすると、音が聞こえません。多分私はどこかのコネクタを見逃したでしょうか?
アイデア?
var audio = document.getElementById('sound');
var context = new AudioContext();
var analyser = context.createScriptProcessor(1024, 1, 1);
var source = context.createMediaElementSource(audio);
source.connect(analyser);
analyser.connect(context.destination);
opacify();
function opacify(){
analyser.onaudioprocess = function(e){
var out = e.outputBuffer.getChannelData(0);
var int = e.inputBuffer.getChannelData(0);
var max = 0;
for(var i = 0; i < int.length; i++){
out[i] = 0;
max = int[i] > max ? int[i] : max;
}
$('#artist').css({'opacity': max}); // updates opacity from value
}
}
助けてください。 ありがとう...
出力をしたい場合は、scriptNodeの出力バッファを設定する必要があります(同じ出力が必要な場合は 'out [i] = int [i]')。また、ソースから未処理のサウンドを聞きたい場合は、sourceNodeを直接destinationNodeに直接接続することもできます。とにかく、 'out [i] = 0'は何もしません。 – Kaiido
ありがとう、それは意図どおりに動作します、明らかに 'out [i] = 0'は本当の間違いでした... – hug