クロマカナリアのhttp://code.google.com/p/chromium/issues/detail?id=112367に対応するマイク入力を妨げるバグが修正されました。この部分は機能しているようです。私はマイク入力をオーディオ要素に割り当て、その結果をスピーカーから聞くことができます。WebオーディオAPIアナライザノードがマイク入力で動作しない
しかし、私はFFTを行うためにアナライザノードに接続したいと思います。オーディオソースをローカルファイルに設定すると、アナライザノードが正常に機能します。問題は、マイクオーディオストリームに接続すると、アナライザノードがオーディオストリームをまったく持たないかのように基本値を返してしまうことです。 (あなたが好奇心を抱いていれば-100を何度も繰り返します。)
誰もが分かっていますか?まだ実装されていないのですか?これはクロムバグですか?私はWindows 7で26.0.1377.0を実行していて、getUserMediaフラグを有効にして、pythonのsimpleHTTPServer経由でlocalhost経由でサービスしているので、アクセス権を要求できます。
コード:
var aCtx = new webkitAudioContext();
var analyser = aCtx.createAnalyser();
if (navigator.getUserMedia) {
navigator.getUserMedia({audio: true}, function(stream) {
// audio.src = "stupid.wav"
audio.src = window.URL.createObjectURL(stream);
}, onFailure);
}
$('#audio').on("loadeddata",function(){
source = aCtx.createMediaElementSource(audio);
source.connect(analyser);
analyser.connect(aCtx.destination);
process();
});
私がコメントしたバージョンにaudio.srcを設定する場合は、再度、それは動作しますが、マイクとそうではありません。プロセスが含まれています
FFTData = new Float32Array(analyser.frequencyBinCount);
analyser.getFloatFrequencyData(FFTData);
console.log(FFTData[0]);
私もcreateMediaStreamSourceを使用して、音声要素迂回しようとした - 例4からhttps://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/webrtc-integration.htmlを。また、失敗しました。 :(
if (navigator.getUserMedia) {
navigator.getUserMedia({audio: true}, function(stream) {
var microphone = context.createMediaStreamSource(stream);
microphone.connect(analyser);
analyser.connect(aCtx.destination);
process();
}
私はバッファにmediasteamを書き込み、その後、FFTを行うためにdsp.jsか何かを使用することが可能であるかもしれないと想像が、私はその道を行く前に私が最初にチェックしたい。
FFTData配列全体を検査しましたか?私はあなたがただのコンソールであることに気づいた。 AnalyserNodeはマイク入力で動作するはずです... –
処理機能はさらにキャンバスビジュアライザに渡します。値はすべて-100です。私は変数スコープのようなものをチェックしていて、すぐにMacでそれを試してみようとしています。本当に何が起こっているのか分からない。 – Newmu