实现原理的话,主要是以下三点,
利用webrtc的getUserMedia方法获取设备音频输入,使用audioprocess得到音频流(pcm流,范围-1到1)。
转码,利用前端中的ArrayBuffer等二进制操作按采样位数处理流信息。
使用decodeAudioData转码arraybuffer到audioBuffer并播放(小文件,大文件使用audio)。
一般插件只支持MP3,鱼和熊掌很难兼得,如果考虑浏览器兼容性,那用flash无疑是最好,如果考虑格式的兼容性,则支持html5的浏览器直接用audio标签最好。这个确实是棘手的问题,百度是进行了判断来播放的。我们这因为技术有限,后台进行了转码,推荐你看看jplayer和flowplayer,这两个是比较常见的开源音频插件,但不幸的是都只支持MP3格式