xiangyuecn/Recorder

求助!做在线实时通话时声音播放有“哒~哒~哒~”的声音

115859101 opened this issue · 5 comments

向大佬求助!

我现在做一个可在线进行通话的功能,但是在接收到websocket发送过来的实时声音(转为base64的wav)时播放会有“哒哒~”的噪音,不知道是不是每次接收一个声音片段时就这样?请问大佬这个是什么原因呢?

不连续的播放就会有这种现象,每个片段淡入淡出一下就会改善,只需淡入淡出几毫秒的数据就可以了

参考BufferStreamPlayer

/**pcm数据进行首尾1ms淡入淡出处理,播放时可以大幅减弱爆音**/
var FadeInOut=BufferStreamPlayer.FadeInOut=function(arr,sampleRate){
var sd=sampleRate/1000*1;//浮点数,arr是Int16或者Float32
for(var i=0;i<sd;i++){
arr[i]*=i/sd;
}
for(var l=arr.length,i=~~(l-sd);i<l;i++){
arr[i]*=(l-i)/sd;
}
};

播放端已经是用了BufferStreamPlayer了的,而且已经是包含了淡入淡出的版本,播放时是会自动处理的吗?

如果你没有进行wav解码,wav格式要去掉wav头,删掉前面44字节变成pcm,不然wav头也会被当做声音播放出来形成噪音

解码了应该不会有明显的噪音

感谢大佬,问题解决了。估计还真是wav的问题,我换成pcm不转wav了就可以了。