「小程序」微信小程序的录音、播放API(07/13更新)

更新记录

  • 07/13 改为MD格式

环境

  • 微信版本:iOS 6.6.1

wx.getRecorderManager()

采样率、编码、格式与大小的关系
采样率编码1通道mp31通道aac2通道mp32通道aac
800016k25920233962592021612
800024k25920269482592024718
800032k25920err2592027197
800048k25920err2592032247
1600024k64800349716480033088
1600032k64800383586480036041
1600048k64800453746480041812
1600064k64800err6480045803
1600096k64800err6480049885
4410064k1295668293812956680686
4410096k1295669500212956689078
44100128k12956610771912956696762
44100192k129566135319129566109354
44100320k129566err129566173212
  • 表格中的数据为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会发现已执行过。

发表回复

Your email address will not be published. Required fields are marked *.

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理