Javascript 如何每20ms仅捕获8个字节的音频缓冲区?
我使用Javascript Web Audio API捕获麦克风流,我通过UDP传输发送数据,但在发送之前,我需要每20毫秒将数据转换为8帧(总共160帧)。有没有人举过一个例子,或者以前做过Javascript 如何每20ms仅捕获8个字节的音频缓冲区?,javascript,audio-streaming,web-audio-api,Javascript,Audio Streaming,Web Audio Api,我使用Javascript Web Audio API捕获麦克风流,我通过UDP传输发送数据,但在发送之前,我需要每20毫秒将数据转换为8帧(总共160帧)。有没有人举过一个例子,或者以前做过 navigator.mediaDevices.getUserMedia({ audio: true }) .then((stream)=>{ micStream.setStream(stream); const context = new AudioCon
navigator.mediaDevices.getUserMedia({ audio: true })
.then((stream)=>{
micStream.setStream(stream);
const context = new AudioContext();
const processor = context.createScriptProcessor(16384,1,1);
const mediaStreamSource = context.createMediaStreamSource(stream);
mediaStreamSource.connect(processor);
processor.connect(context.destination);
processor.onaudioprocess = (e) =>{
try{
if(!this.isValidAudio()){
context.close();
}else{
const leftData = e.inputBuffer.getChannelData(0);
const buffer = this.convertFloat32ToInt16(leftData);
this.ws.send(buffer, (result)=>{
console.log('Result >> ', result);
}, false);
}
}catch(error){
console.log('error >> ', error)
}
};
}).catch((e)=>{
console.log('stream error >> ', e);
})
我使用wasm,AudioWorkletProcessor和一个RingBuffer实现解决了它。我最近发布了一个NPM库,使它变得简单。我使用wasm,AudioWorkletProcessor和一个RingBuffer实现解决了它。我最近发布了一个NPM库,使它变得简单