我在开发中也遇到了这样的问题,不过是第一次播放可以完整播放完毕,但待播放自然结束后,再次调用play()方法,后续的每一次播放该音频,都是不完整的,都差了100~300毫秒的样子
调用音频 wx.createInnerAudioContext 方法,在部分机型无法播放完整问题: 目前我们产品需要播放音频,资源的URL:https://s.gsucdn.com/audio_sentences/12a2e21abafebf7f7898759f95c041f4.mp3 调用的是小程序:wx.createInnerAudioContext 这个方法。 目前发现一个机型,无法播放完整就结束了。 这个资源是一个英文的句子:You don't need to understand every word。 当播放最后一秒的时候,word中 d 没有发音完,就播放结束了。 其他手机我可完成的 播放到 d 这个发音再结束。 详细代码: const playAudio = () => { const audioContext = wx.createInnerAudioContext(); audioContext.src = 'https://s.gsucdn.com/audio_sentences/12a2e21abafebf7f7898759f95c041f4.mp3'; audioContext.play(); } 设备信息: 安卓15版本, vivo X100 Ultra [图片] [图片]
08-04文本中的代码片段不完全,只挑取了重要的内容,顺序有点问题,不过问题不大
RecorderManager.onFrameRecorded在iOS端监听WAV格式回调不生效?开发录音功能时,在Android端使用WAV格式录音,然后获取帧回调,以此用来计算一些实时数据,但在iOS端却发现实时计算未生效,排查后发现是微信的RecorderManager.onFrameRecorded(function listener)方法并没有触发回调,而修改为mp3格式后,回调又能正常执行了。但mp3格式的帧回调无法让我计算一些数据,如当前录音帧的分贝大小等 [图片] IOS真机版本:18.5 Android真机版本:15 data: { // 录音参数 options: { // 录音的时长 1min duration: 60 * 1000, // 采样率 22050 24000 sampleRate: 12000, // 录音通道数 numberOfChannels: 1, // 编码码率 39000 40000 encodeBitRate: 64000, // 音频格式 wav PCM pcm格式似乎无法被audioCtx播放 但mp3格式可以被播放 // 如果使用wav,可以不处理直接播放,如果使用pcm,则要先处理成mp3,才能播放 // wav文件比pcm文件大一点 format: 'wav', // 指定帧大小回调 KB frameSize: 1.5 }, } let recorderManager = wx.getRecorderManager() recorderManager.start(this.data.options) // 监听已录制完指定帧大小的文件事件 recorderManager.onFrameRecorded((res) => { const { frameBuffer } = res console.log('录音指定帧 frameBuffer', frameBuffer, frameBuffer.byteLength) if (res.frameBuffer && res.frameBuffer.byteLength) { console.warn('指定帧回调,计算volume') // 自定义RMS计算 const volume = calculateVolume(res.frameBuffer) console.log('volume:', volume) this.data.waveData.push(volume.toFixed(2)) // 更新数据 this.setData({ waveData: this.data.waveData }) // console.log('自定义计算:', volume) } })
07-17