リアルタイムの音声通話アプリケーションを構築しようとしています。私の目標は、ネイティブ JS マイク API を使用し、websocket 経由で他のクライアントにデータを送信することです。次のコードを見つけました。
<script>
// Globals
var aCtx;
var analyser;
var microphone;
navigator.getUserMedia_ = ( navigator.getUserMedia
|| navigator.webkitGetUserMedia
|| navigator.mozGetUserMedia
|| navigator.msGetUserMedia);
if (navigator.getUserMedia_) {
navigator.getUserMedia_({audio: true}, function(stream) {
aCtx = new webkitAudioContext();
analyser = aCtx.createAnalyser();
microphone = aCtx.createMediaStreamSource(stream);
microphone.connect(analyser);
process();
});
};
function process(){
console.log(analyser);
setInterval(function(){
FFTData = new Float32Array(analyser.frequencyBinCount);
analyser.getFloatFrequencyData(FFTData);
console.log(FFTData); // display
},10);
}
</script>
10msごとにバッファを取得し、ノード経由で送信します。問題は、バッファを再生する方法を理解できなかったことと、バッファを正しい方法で取得しているかどうかさえわからないことです。私はもう試した:
var source = audioContext.createBufferSource();
var buffer; // the result printed in the code below
var audioBuffer = audioContext.createBuffer(1, buffer.length, 44100);
audioBuffer.getChannelData(0).set(buffer);
source.buffer = audioBuffer;
source.connect(audioContext.destination);
バッファを正しく取得していますか? どうすればプレイできますか?