小程序
小游戏
企业微信
微信支付
扫描小程序码分享
这里是代码,下面是报错,
请问通过小程序录音获取到的分片数据ArrayBuffer可以被decodeAudioData这个方法解析成AudioBuffer吗,如果不可以的话那用何种方式可以解析?
6 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
const recorderManager = wx.getRecorderManager()
recorderManager.onStart(() => {
console.log('recorder start')
})
recorderManager.onPause(() => {
console.log('recorder pause')
recorderManager.onStop((res) => {
console.log('recorder stop', res)
const { tempFilePath } = res
recorderManager.onFrameRecorded((res) => {
const { frameBuffer } = res
console.log('frameBuffer.byteLength', frameBuffer.byteLength)
const options = {
duration: 10000,
sampleRate: 44100,
numberOfChannels: 1,
encodeBitRate: 192000,
format: 'wav',
frameSize: 50
}
recorderManager.start(options)
录制的时 start 方法内 format 需要传 mp3 格式, onFrameRecorded 才会被触发,手机上测试可以,我测试成功了,电脑端开发工具是不行的。
我猜你和我一样是想做音频可视化,但太卡了,换 方案吧,毕竟不是 web ,小程序内你拿到数据后需要 setData到渲染进程这通信量太卡了
decodeAudioData 在wav不会触发,PCM会导致data error的错误,不能被decodeAudioData解析,没法在实时录音(PCM格式)的时候做音频曲线操作。
wx.getRecorderManager().onFrameRecorded((res) => { if (res.isLastFrame) { console.log('record done') } if (recordConfig.st && recordConfig.stStart) { recordConfig.st.sendAudio(res.frameBuffer) // 这里wav不会执行到,pcm直接报错 audioCtx.decodeAudioData( res.frameBuffer, (buffer) => { console.log('buffer', buffer) }, (err) => { console.error('decodeAudioData fail', err) } ) } })
请问解决了吗?遇到同样的问题
请问你解决了吗
我也遇到了“decodeAudioData”抛出"data error"的错误,在开发工具上可以正常运行,但是真机模拟就会报"data error"的错,通过排查发现音频格式为mp3时候就会报错,可以通过改一下音频格式来解决。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
const recorderManager = wx.getRecorderManager()
recorderManager.onStart(() => {
console.log('recorder start')
})
recorderManager.onPause(() => {
console.log('recorder pause')
})
recorderManager.onStop((res) => {
console.log('recorder stop', res)
const { tempFilePath } = res
})
recorderManager.onFrameRecorded((res) => {
const { frameBuffer } = res
console.log('frameBuffer.byteLength', frameBuffer.byteLength)
})
const options = {
duration: 10000,
sampleRate: 44100,
numberOfChannels: 1,
encodeBitRate: 192000,
format: 'wav',
frameSize: 50
}
recorderManager.start(options)
录制的时 start 方法内 format 需要传 mp3 格式, onFrameRecorded 才会被触发,手机上测试可以,我测试成功了,电脑端开发工具是不行的。
我猜你和我一样是想做音频可视化,但太卡了,换 方案吧,毕竟不是 web ,小程序内你拿到数据后需要 setData到渲染进程这通信量太卡了
decodeAudioData 在wav不会触发,PCM会导致data error的错误,不能被decodeAudioData解析,没法在实时录音(PCM格式)的时候做音频曲线操作。
wx.getRecorderManager().onFrameRecorded((res) => { if (res.isLastFrame) { console.log('record done') } if (recordConfig.st && recordConfig.stStart) { recordConfig.st.sendAudio(res.frameBuffer) // 这里wav不会执行到,pcm直接报错 audioCtx.decodeAudioData( res.frameBuffer, (buffer) => { console.log('buffer', buffer) }, (err) => { console.error('decodeAudioData fail', err) } ) } })
请问解决了吗?遇到同样的问题
请问你解决了吗
我也遇到了“decodeAudioData”抛出"data error"的错误,在开发工具上可以正常运行,但是真机模拟就会报"data error"的错,通过排查发现音频格式为mp3时候就会报错,可以通过改一下音频格式来解决。