前言

在调试微信小程序音频播放时,刚开始我也是直接复制官方文档的实例:

const innerAudioContext = wx.createInnerAudioContext()
innerAudioContext.autoplay = true
innerAudioContext.src = 'http://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E061FF02C31F716658E5C81F5594D561F2E88B854E81CAAB7806D5E4F103E55D33C16F3FAC506D1AB172DE8600B37E43FAD&fromtag=46'
innerAudioContext.onPlay(() => {console.log('开始播放')
})
innerAudioContext.onError((res) => {console.log(res.errMsg)console.log(res.errCode)
})

然而此时就出现了,无论按多少下都是重复播放同一条语音的情况!

从 https://blog.csdn.net/qq_39364032/article/details/79742120 得知,wx.createInnerAudioContext()这个api新建了一个实例之后,需要销毁实例,才能重新new一个实例。所以,我做了以下改动:

const innerAudioContext = wx.createInnerAudioContext()innerAudioContext.autoplay = trueinnerAudioContext.src = res.tempFilePathinnerAudioContext.onPlay(() => {console.log('开始播放')})innerAudioContext.onStop(() => {console.log('i am onStop')innerAudioContext.stop()//播放停止,销毁该实例innerAudioContext.destroy()})innerAudioContext.onEnded(() => {console.log('i am onEnded')//播放结束,销毁该实例innerAudioContext.destroy()console.log('已执行destory()')})innerAudioContext.onError((res) => {console.log(res.errMsg)console.log(res.errCode)innerAudioContext.destroy()})

最终解决方案

然而!无论我执行多少次,还是播放第一条语音!从我的后台来看,每次返回的语音文件都是不同的,甚至我把服务器上的文件下载到本地,也是不同的!于是我就怀疑它下载过一次这个地址就不再下载了。所以我又换一种写法,在上面加上wx.downloadFile这个api。

wx.downloadFile({url: 'http://47.106.74.22:8081/voice/download_audio', //仅为示例,并非真实的资源success: function (res) {// 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容if (res.statusCode === 200) {const innerAudioContext = wx.createInnerAudioContext()innerAudioContext.autoplay = trueinnerAudioContext.src = res.tempFilePathinnerAudioContext.onPlay(() => {console.log('开始播放')})innerAudioContext.onStop(() => {console.log('i am onStop')innerAudioContext.stop()//播放停止,销毁该实例innerAudioContext.destroy()})innerAudioContext.onEnded(() => {console.log('i am onEnded')//播放结束,销毁该实例innerAudioContext.destroy()console.log('已执行destory()')})innerAudioContext.onError((res) => {console.log(res.errMsg)console.log(res.errCode)innerAudioContext.destroy()})}}})

到这里,终于解决这个问题

注意的是,wx.createInnerAudioContext()无法播放wav文件,于是这里我用的是MP3文件。而wx.playVoice(OBJECT)也无法播放mp3文件。

微信小程序-音频播放 每次都是重复播放同一条录音相关推荐

  1. 微信小程序-音频播放-wx.createInnerAudioContext() 每次都是重复播放同一条录音

    前言 在调试微信小程序音频播放时,刚开始我也是直接复制官方文档的实例: const innerAudioContext = wx.createInnerAudioContext() innerAudi ...

  2. uniapp实现微信小程序音频播放倒计时的功能,类似微信语音条

    uniapp实现微信小程序音频播放功能 最近需要有个项目需要用到音频播放,第一个想到的是audio标签,但是查阅了uniapp官方文档,发现audio组件已经不维护了. 官网推荐使用uni.creat ...

  3. 优化微信小程序音频播放,实现多音频同时播放,互不干扰。

    原理就是创建5个 innerAudioContext实例化对象,轮流调用.(小程序只能同时存在5个音频实例). 附上demo: const innerAudioContext1 = wx.create ...

  4. 微信小程序音频播放,可拖动进度条,可有时间显示

    首先来展示一下效果: 中间的播放条以及下面的浮窗就是我们呈现的最终效果. 音频播放使用的组件是: wx.getBackgroundAudioManager(); 在wx.request()中首先初始音 ...

  5. 微信小程序 - 音频播放进度条和点击拖动的控制,支持自定义音乐播放控件样式布局(wx.createAudioContext)解决各种 InnerAudioContext.onTimeUpdate不执行

    前言 网上有很多关于 InnerAudioContext.onTimeUpdate 不执行.失效的问题,都导致播放进度条无法做了,本文完美解决. 本文实现了 自定义播放音频控件样式,且支持播放进度条显 ...

  6. 微信小程序音频相关问题:播放,录音等相关

    其实我也知道音频问题,十分尴尬,可以参考的资料极少,研究者也不多,所处的教程也基本是基础的内容,稍微深入几乎一篇都没有:所以前段时间我就准备弄的东西,一直没弄,因为没资料去弄,但是今天,看到一个同学遇 ...

  7. 微信小程序音乐播放器

    趁周末做一个简单的微信小程序音乐播放器,源码已留. 播放列表首页wxml <swiper class="swiper" indicator-dots='{{swipterSe ...

  8. 微信小程序中播放海康萤石云HLS '.m3u8'视频 video标签

    微信小程序中播放海康萤石云HLS '.m3u8'视频 video标签 前言 萤石云开放平台 微信开发者工具 前言 因为项目需要在微信小程序上展示实时视频流信息,以下内容是我将萤石云平台官方文档和自己实 ...

  9. 微信小程序 音频播放功能createInnerAudioContext

    微信小程序 音频播放功能createInnerAudioContext 效果: 前端界面代码: <view class="cu-modal {{ModalName=='DialogMo ...

最新文章

  1. bzoj1251: 序列终结者 (splay)
  2. 最强大的GNN出现了!
  3. TWaver html5 + NodeJS + express + websocket.io + redis 快速搭建项目(一)
  4. Wi-Fi和WLAN有什么区别
  5. 查看list的形状_用Wordcloud生成指定形状的词云图
  6. docker remote api未授权访问漏洞(端口:2375)
  7. 中台生态的形成:全面解读技术、研发、移动中台建设
  8. linux-文件的查找-find
  9. python编程例子_Python的经典入门书籍有哪些?这5本值得一看
  10. vc中format用法以及c++中Format用法
  11. ArcGIS教程 - 9 矢量数据空间分析
  12. 评测 AlibabaCloud 阿里云国际版 香港轻量云服务器的性能和网络怎么样
  13. 模电十:555定时器
  14. Classics Sentence Excerpt
  15. uniapp 启动页视频
  16. MAYA XGen创建毛发时报错找不到过程“XgCreateDescription“或提示“RuntimeError”的解决方法
  17. c#中如何进行com口操作?
  18. 【数据结构】链表的增删改查| 组件化封装
  19. PPT使用VBA批量删除图形
  20. 山雨欲来风满楼——云计算趋势一览

热门文章

  1. [附源码]Java计算机毕业设计SSM合肥市公务员报名管理系统
  2. 13岁的京东和13岁的亚马逊 他们之间有什么不同?
  3. MATLAB RTW与VS
  4. 微信小程序预览常见问题 未找到app.json这个怎么解决
  5. 新一代代理利器 - traefik
  6. 2009.11.19-教育报道-美国大学创入学记录新高
  7. android开机优化工具箱,【谷歌Android帝】dexopt(odex)优化方法,人人都是优化大师!!!...
  8. 小米上市首日遭破发,意料之内还是意料之外?
  9. 沈天晴的佳源服务再度破发:管理规模偏低,成长性受限?
  10. 计算机软件课程资料,课程实践论文,关于计算机系软件工程专业,计算机专业所有课程软件相关参考文献资料-免费论文范文...