Results 12 comments of 涛走云散

这个只能在 onaudioprocess 回调中处理了,每次音频数据收集满后触发audioprocess,在此处理编码,编码完成后发送给后端,如果性能有要求的话,也可以考虑再加上web worker。

一直想在recorder中加的,还没来的及,欢迎提pull request...

```js var data = e.inputBuffer.getChannelData(0); // 0是单通道下的,双通道考虑的会多些 new Float32Array(data); // 这儿就是前端缓存的音频数据,每次只要发送他就行了,大小是由 context.createScriptProcessor(4096, 1, 1); 第一个参数决定的。 ```

1. 处理pcm的问题。 由于我原先是先做收集,后期处理,所以,现在需要将encodePCM等一堆处理移到processaudio中。 2. data大小问题。 每次 `e.inputBuffer.getChannelData(0)`返回的都是新的4096个数据,相对来说就是第一次是0-4096,第二次是4097-8192,等等,所以这个是需要后端收集起来的

问题应该有两点吧 1. 实时播放 2. 录音去除播放的声音 实时的话对性能估计有比较大的影响。至于消除播放的声音,音频这块还是比较菜的,目前还没啥好的想法。。。

可以使用下实例上的getRecordAnalyseData()方法,readme上有。具体使用可以看下example文件夹下的example.ts文件中canvas绘制那部分。

是我看错了,用decodeAudioData()方法播放就可以的。但是我这块播放外部文件,我是用的a标签播放的。

为啥会到process事件上呢? ```html document.getElementById('load').addEventListener('change', function() { let file = this.files[0]; this.context = new (window.AudioContext || window.webkitAudioContext)(); this.analyser = this.context.createAnalyser(); this.analyser.fftSize = 2048; // 转arraybuffer let oReader = new FileReader(); oReader.onload =...

new Blob([ dataView ]) 这样就行了

录音拿到的数据就是pcm无压缩的,如果需要ogg格式的话,是需要转化的。后端转的话,应该都是有相应处理音频的库。前端的话,转ogg格式的插件或库还没研究过,后续看下。