drc*_*coa 7 javascript websocket node.js html5-audio webrtc
我想使用Web浏览器从麦克风获取实时音频,并通过websockets将其发送到Node.js服务器.我正在使用BinaryJS库将二进制数据发送到服务器.我在从麦克风获取音频样本时遇到问题.这是我有的:
window.AudioContext = window.AudioContext || window.webkitAudioContext;
var context = new AudioContext();
var audio = document.querySelector('audio');
navigator.webkitGetUserMedia({audio: true}, function(micstream){
audio.src = window.URL.createObjectURL(micstream);
}, errorCallback);
});
var errorCallback = function(e){
console.log("Rejected!", e);
};
Run Code Online (Sandbox Code Playgroud)
我想要一些方法来获取每10ms左右的音频样本,以便我可以将它写入websocket流.我正在寻找这样的东西:
function getSample(){
//read the current data in byte buffer.
setTimeout(getSample, 10);
}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我怎么做?或者还有另一种方法吗?谢谢!
这些要点应该让您走上正确的道路:
JavaScriptNodeorScriptProcessor并将其用于onaudioprocess您的函数。您可以轻松设置时间间隔,确保仅每 10 毫秒一次。这与当前 RTCRecorder 的功能非常相似。float PCM. 你可以将它们转换为16 bit PCMJavaScript,但值得的媒体库(我确信 Gstreamer)可以翻译流。这是我写的代码。这段代码只是已经存在的录音机的修改版本,但我通过 websocket 发送数据,并且我没有在 javascript 中修改它,但是如果您需要的话,源代码中包含从浮点更改为 16 位 PCM 音频的功能。您可以弹出一个时间检查onaudioprocess并将其移出websocket(worker目前只有 Chrome 支持工作线程中的 WebSockets),您应该可以开始了。