更新记录
- 07/13 改为MD格式
环境
- 微信版本:iOS 6.6.1
wx.getRecorderManager()
采样率、编码、格式与大小的关系
采样率 | 编码 | 1通道mp3 | 1通道aac | 2通道mp3 | 2通道aac |
---|---|---|---|---|---|
8000 | 16k | 25920 | 23396 | 25920 | 21612 |
8000 | 24k | 25920 | 26948 | 25920 | 24718 |
8000 | 32k | 25920 | err | 25920 | 27197 |
8000 | 48k | 25920 | err | 25920 | 32247 |
16000 | 24k | 64800 | 34971 | 64800 | 33088 |
16000 | 32k | 64800 | 38358 | 64800 | 36041 |
16000 | 48k | 64800 | 45374 | 64800 | 41812 |
16000 | 64k | 64800 | err | 64800 | 45803 |
16000 | 96k | 64800 | err | 64800 | 49885 |
44100 | 64k | 129566 | 82938 | 129566 | 80686 |
44100 | 96k | 129566 | 95002 | 129566 | 89078 |
44100 | 128k | 129566 | 107719 | 129566 | 96762 |
44100 | 192k | 129566 | 135319 | 129566 | 109354 |
44100 | 320k | 129566 | err | 129566 | 173212 |
- 表格中的数据为3秒录音
- fileSize的单位为Bytes,因此除1024转为KB
- 录音设定的duration,在stop()时获得res.duration并不准确,有百毫秒级的偏差
wx.getBackgroundAudioManager()
- 播放执行顺序:
- onWaiting()
- onPlay()
- onTimeUpdate()
与音频长度成正比,不可同步处理,第1、2次可能会在onWaiting()或onPlay()前 - onEnded()
- onWaiting()有卡住的情况,因此要加个限时判定机制,重新走一遍流程
- onTimeUpdate 的触发频率是1秒触发(目测),但也会发生6秒的录音只触发5次的情况(不准确)
- backgroundAudioManager.src赋值播放新音频前,必须设置backgroundAudioManager.title,否则无法播放(赋值空字符串也会如此)
- frameSize填写后,onFrameRecorded()返回的isLastFrame在mp3、acc下都有效,但frameBuffer内容为空,原因未知
BUG
- 缩小小程序时,想让正在播放的背景音频暂停播放,如果放在Page()或App()的onHide()中,并不会触发backgroundAudioManager.pause(),stop()同理。Page()的onHide()只针对当navigateTo或底部tab切换时才调用,因此按照这个规则,是不会触发的。但在实际测试中,缩小小程序再展开,查看console会发现已执行过。