我正在制作奇妙的样本这里。
本质上,我使用getUserMedia从麦克风捕捉音频,然后将每帧的采样降到每秒16000个样本的Int16Array。
在服务器端,我可以接收音频和使用wav包,我也可以保存WAV文件。
问题是,当我不想降低采样(是的,我知道带宽的含义,但这是我的要求)。
我能够流原始音频(在Float32Array中),并能够将其保存为WAV。然而,有很多白噪音加进来。
当我在服务器端下样例时,WAV包无法处理它,因为它不再是一个可行的WAV帧。
我试着用
var samples = new Float32Array(e.inputBuffer.getChannelData(0))
socket.emit('binaryData',samples.buffer);并在服务器端接收到
socket.on('binaryData',function (data){
var recovered = new Float32Array(data);
wavFileWriter.write(recovered.buffer);
});但这也行不通。
我现在想知道Socket.io是否对下采样函数中涉及的数据做了些什么。
还是我漏掉了什么明显的东西?
编辑1:为了排除Socket.io问题,我创建了具有以下设置的服务器,但没有任何改进:
{
perMessageDeflate: false,
httpCompression: false,
maxHttpBufferSize:1e8
}发布于 2022-03-11 19:50:53
解决办法如下:
const f32 = new Float32Array(data.buffer, 0, data.byteLength / Float32Array.BYTES_PER_ELEMENT);https://stackoverflow.com/questions/71427419
复制相似问题