現在修正了Chrome Chrome Can每個http://code.google.com/p/chromium/issues/detail?id=112367阻止麥克風輸入的錯誤。這部分似乎工作。我可以將麥克風輸入分配給音頻元素,並通過揚聲器收聽結果。網絡音頻API分析器節點未與麥克風輸入配合使用
但我想連接分析儀節點,以便做FFT。如果我將音頻源設置爲本地文件,分析器節點工作正常。問題是,當連接到麥克風音頻流時,分析儀節點只是返回基本值,就好像它根本沒有音頻流一樣。 (如果你好奇,它會一遍又一遍的重複。)
任何人都知道這是怎麼回事?它尚未實施?這是一個鉻錯誤?我在Windows 7上運行26.0.1377.0,並啓用了getUserMedia標誌,並通過本地主機通過python的simpleHTTPServer服務,以便它可以請求權限。
代碼:
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寫入緩衝區,然後使用dsp.js或有事做FFT,但我想先檢查之前,我這條路走。
您是否檢查過整個FFTData數組?我注意到你只是console.logging的第一個元素。 AnalyserNode應該與麥克風輸入一起工作... –
進程函數進一步將其傳遞到畫布可視化器上,所有值都是-100。我正在檢查諸如變量範圍的事情,並且很快就會在Mac上嘗試它。真的不知道發生了什麼事。 – Newmu