2013-01-09 47 views
11

Lỗi ngăn chặn nhận đầu vào micrô trên http://code.google.com/p/chromium/issues/detail?id=112367 cho Chrome Canary hiện đã được khắc phục. Phần này dường như đang hoạt động. Tôi có thể gán đầu vào micrô cho một phần tử âm thanh và nghe kết quả thông qua loa.Trình phân tích API âm thanh trên web Nút không hoạt động với đầu vào micrô

Nhưng tôi muốn kết nối nút phân tích để thực hiện FFT. Nút phân tích hoạt động tốt nếu tôi đặt nguồn âm thanh thành tệp cục bộ. Vấn đề là khi kết nối với dòng âm thanh mic, nút phân tích chỉ trả về giá trị cơ sở như thể nó không có luồng âm thanh nào cả. (Đó là -100 hơn và hơn nữa nếu bạn tò mò.)

Bất cứ ai biết chuyện gì đang xảy ra? Nó chưa được triển khai chưa? Đây có phải là lỗi chrome không? Tôi đang chạy 26.0.1377.0 trên Windows 7 và có cờ getUserMedia được kích hoạt và đang phục vụ thông qua localhost thông qua simpleHTTPServer của python để nó có thể yêu cầu quyền.

Code:

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(); 
}); 

lần nữa, nếu tôi đặt audio.src lên phiên bản nhận xét, nó hoạt động, nhưng với microphone nó không phải là. Quy trình chứa:

FFTData = new Float32Array(analyser.frequencyBinCount); 
analyser.getFloatFrequencyData(FFTData); 
console.log(FFTData[0]); 

Tôi cũng đã thử sử dụng createMediaStreamSource và bỏ qua phần tử âm thanh - ví dụ 4 - https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/webrtc-integration.html. Cũng không thành công. :(

if (navigator.getUserMedia) { 
     navigator.getUserMedia({audio: true}, function(stream) { 
     var microphone = context.createMediaStreamSource(stream); 
     microphone.connect(analyser); 
     analyser.connect(aCtx.destination); 
     process(); 
    } 

tôi tưởng tượng nó có thể là có thể viết mediasteam đến một bộ đệm và sau đó sử dụng dsp.js hoặc một cái gì đó để làm FFT, nhưng tôi muốn kiểm tra đầu tiên trước khi tôi đi xuống đường đó.

+0

Bạn đã kiểm tra toàn bộ mảng FFTData chưa? Tôi nhận thấy bạn chỉ cần console.logging yếu tố đầu tiên. AnalyserNode sẽ hoạt động với đầu vào micrô ... –

+0

Chức năng xử lý tiếp tục chuyển nó vào trình hiển thị vải, tất cả các giá trị là -100. Tôi đang kiểm tra những thứ như phạm vi biến và tôi sẽ thử nó trên một mac sớm. Thực sự không biết chuyện gì đang xảy ra. – Newmu

Trả lời

7

Đó là một vấn đề về phạm vi biến.Ví dụ thứ hai, tôi đã định nghĩa micro cục bộ và sau đó cố gắng truy cập luồng của nó bằng máy phân tích trong một chức năng khác Tôi chỉ cần tạo tất cả các nút của các nút Web Audio API để an tâm. mất vài giây để nút trình phân tích bắt đầu báo cáo các giá trị không phải là 100. Mã làm việc cho những người quan tâm:

// Globals 
var aCtx; 
var analyser; 
var microphone; 
if (navigator.getUserMedia) { 
    navigator.getUserMedia({audio: true}, function(stream) { 
     aCtx = new webkitAudioContext(); 
     analyser = aCtx.createAnalyser(); 
     microphone = aCtx.createMediaStreamSource(stream); 
     microphone.connect(analyser); 
     // analyser.connect(aCtx.destination); 
     process(); 
    }); 
}; 
function process(){ 
    setInterval(function(){ 
     FFTData = new Float32Array(analyser.frequencyBinCount); 
     analyser.getFloatFrequencyData(FFTData); 
     console.log(FFTData[0]); 
    },10); 
} 

Nếu bạn muốn nghe âm thanh trực tiếp, bạn có thể kết nối máy phân tích với đích (loa) như đã nhận xét ở trên. Xem ra cho một số thông tin phản hồi đáng yêu mặc dù!

+0

Nó mang lại cho tôi giá trị trên 100 tất cả thời gian. Bạn có nhớ vấn đề bạn gặp phải không? Cảm ơn! – jbartolome

+0

Điểm ở đây là micrô được tạo thành 'aCtx.createMediaStreamSource (luồng);'. Tạo nó bằng nút âm thanh như 'audio.src = URL.createObjectURL (luồng);' không trả về giá trị trong bộ phân tích âm thanh. –

+0

Xin chào! Tôi nhận được tất cả các tần số âm nhưng không phải là -100. Không nên có giá trị tích cực là tốt? – monisha

Các vấn đề liên quan