- RecorderManager.start 设置路由片段大小不正确
[图片] 明显设置为1,根据文档显示片段达到1KB是返回,但是返回长度不应该是1024吗,为什么每次返回长度都不一样 [图片]
01-21 - 小程序录音mp3格式onFrameRecorded片段数据不正确?
小程序getRecorderManager 录音mp3格式, onFrameRecorded 返回片段数据 第二次录音(或者是第三次) onFrameRecorded 返回片段数据异常 PCM格式录音片段不会有问题不管是第几次录音,MP3基本上第二次或者第三次就会提示录音片段数据不对 另外就是 PCM 利用audioCtx.decodeAudioData()绘制波形图可用,但是MP3返回数据全是128无法绘制波形图 async startRecord() { const recorder = wx.getRecorderManager(); const audioCtx = wx.createWebAudioContext(); const analyser = audioCtx.createAnalyser(); const context = wx.createCanvasContext('waveformCanvas', this); this.setData({ recorder, audioCtx, analyser, context }) const _this = this; const _array: any[] = []; //已录制完指定帧大小的文件事件的监听函数 recorder.onFrameRecorded((listener: { isLastFrame: any; frameBuffer: any; }) => { const originalUint8View = new Uint8Array(listener.frameBuffer); // 创建一个新的 ArrayBuffer 和 Uint8Array 视图 const newBuffer = new ArrayBuffer(listener.frameBuffer.byteLength); const newUint8View = new Uint8Array(newBuffer); // 复制数据 for (let i = 0; i < originalUint8View.length; i++) { newUint8View[i] = originalUint8View[i]; } // 用于讯飞实时语音识别 setAudioData(newUint8View) // 绘制波形图 ..... }) const that = this let recorderStatus = 0; recorder.onStart(() => { console.log('recorder start') recorderStatus = 1 }) recorder.onError((err: any) => { console.error('录音错误: ', err); setLastFrame() recorderStatus = 0 }) recorder.onStop(()=>{ setLastFrame() recorderStatus = 0 }) await startUpRecord((textArr: any[])=>{ const text = textArr.join('') console.log(text) that.setData({ inputData: text }) }, ()=>{ recorderStatus && recorder.stop() }) recorder.start({ duration: 10000, numberOfChannels: 1, //录音通道数 sampleRate: 16000, //采样率 encodeBitRate: 96000, //编码码率 format: 'mp3', //音频格式,有效值 PCM/mp3 frameSize: 1 //sampleRate: 16000, //采样率 //encodeBitRate: 96000, //编码码率 //format: 'PCM', //音频格式,有效值 PCM/mp3 //frameSize: 1 }) },
01-13