Błąd uniemożliwiający uzyskanie wejścia mikrofonowego na http://code.google.com/p/chromium/issues/detail?id=112367 dla Chrome Canary został naprawiony. Ta część wydaje się działać. Mogę przypisać wejście mikrofonowe do elementu audio i usłyszeć wyniki przez głośnik.Węzeł interfejsu API sieci audio nie działa z wejściem mikrofonu
Ale chciałbym podłączyć węzeł analizatora, aby wykonać FFT. Węzeł analizatora działa dobrze, jeśli ustawię źródło dźwięku na plik lokalny. Problem polega na tym, że po podłączeniu do mikrofonowego strumienia audio, węzeł analizatora po prostu zwraca wartość podstawową, tak jakby w ogóle nie miał strumienia audio. (To jest -100 raz za razem, jeśli jesteś ciekawy.)
Ktoś wie, co jest grane? Czy nie jest jeszcze wdrożony? Czy to jest błąd chrome? Używam 26.0.1377.0 na Windows 7 i mam włączoną flagę getUserMedia i wyświetlam localhost za pośrednictwem simpleHTTPServer Pythona, aby mógł on żądać uprawnień.
Kod:
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();
});
Ponownie, jeśli ustawić audio.src wersji skomentował to działa, ale z mikrofonu nie jest. Proces zawiera:
FFTData = new Float32Array(analyser.frequencyBinCount);
analyser.getFloatFrequencyData(FFTData);
console.log(FFTData[0]);
Ja również próbowałem za pomocą createMediaStreamSource i pomijając element dźwięku - Przykład 4 - https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/webrtc-integration.html. Również nie powiodło się. :(
if (navigator.getUserMedia) {
navigator.getUserMedia({audio: true}, function(stream) {
var microphone = context.createMediaStreamSource(stream);
microphone.connect(analyser);
analyser.connect(aCtx.destination);
process();
}
sobie wyobrazić, może to być możliwe, aby napisać mediasteam do bufora, a następnie użyć dsp.js lub coś zrobić FFT, ale chciałem najpierw sprawdzić zanim pójdę tą drogą.
Czy sprawdziłeś całą tablicę FFTData? Zauważyłem, że jesteś po prostu konsolą. Porzucając pierwszy element. Węzeł AnalyserNode powinien działać z wejściem mikrofonu ... –
Funkcja procesu przekazuje ją dalej do wizualizatora canvas, wszystkie wartości wynoszą -100. Sprawdzam zmienne scoping i wkrótce wypróbuję na mac. Naprawdę nie wiem co się dzieje. – Newmu