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

前言

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

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文件。

 

转载于:https://www.cnblogs.com/whomhim/p/10518692.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

几段失败的代码

1、下面一段代码将注释和代码混在了一起,不认真看还真不知道。高亮显示后:2、看到这种多层嵌套恶心到头大。3、据说某俄国特工经过九死一生偷到了NASA的太空火箭发射程序的源代码的最后一页,代码是:)))))))))))))))))))))))))))))…

java 发送邮件添加附件_java邮件自动发送时添加网络附件

查了很多资料都是使用本地资源作为附件发送。但是数据和程序分开时,还需要先下载数据,保存到本地再发送邮件。查了很多资料后,发现apach提供了很好的一个commons-mail.jar包,做了很好的封装,简单易用。下载地址是http:…

Excel 取消Internet及网络路径自动替换为超链接

Excel 取消Internet及网络路径自动替换为超链接: 1.文件 》选项 》校对 点击自动更正选项 2. 自动更正 配置修改 点击“键入时自动套用格式”tab页,取消勾选 internet及网络路径替换为超链接 转载于:https://www.cnblogs.com/byronliu029/p/9408468.htm…

那些喝吐的酒~

酒逢知己千杯少我喝不了酒,但是高兴的时候也能喝两杯。入职腾讯,参加了两次部门聚会,都离不开喝酒,吃饭喝酒这事,大家都很开心,那种眼前朦胧,胆子很肥的感觉特别好。领导们也很给面子&#xff0…

实时内核(Core)和实时操作系统(RTOS)有何不同?

大家都知道什么是实时操作系统,但是,大家熟知的实时操作系统,站在更广的角度来看,其实它就是一个实时内核。一、实时内核和实时操作系统一个实时内核是管理微处理器(MPU)、微控制器(MCU&#xf…

linux java远程调试_idea远程linux代码调试

如果线上代码出现问题,如何用本地idea排查问题查找问题?第一步:保证本地代码与线上代码一致;第二步:在线上tomcat文件中/tomcat/bin/catalina.sh文件中添加如下配置找到下面一行信息#----- Execute The Requested Comm…

[文档]. Xilinx - 编写有效的Testbenches

This application note is written for logic designers who are new to HDL verification flows, and who do not have extensive testbench-writing experience. 下载

mysql inner join where_详解mysql 使用left join添加where条件的问题分析

当前需求:有group和factor两张表,一个group对应多个factor,现在想查询有效的group和对应的有效的factor,两个表都有isDel逻辑删除标志。最开始的错误写法一:SELECT g.*,f.* FROM groups g LEFT JOIN factor f ON f.gro…

误打误撞的模板字符串

前情回顾:之所以用到模板字符串呢,是在这样一个场景中用到一个类似微信发朋友圈时选择图片时的一个场景,如图所示 当时脑抽是怎么想的呢,其实也很简单,当时想的就是新建div嘛,然后append到父容器就ok啦&…

工作的前两天

硬件问题 工作的第一天,我接触是硬件。 公司需要为服务器装入windows server 2003 的系统,可是问题一直在出现。 服务器原先的系统是装过SQL 2000 之后,系统就不能进去,总是提示密码错误。后来决定用ERD光盘破解密码,接…

java类型转换方法_Java中基本数据类型转换的方法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼一、自动类型转换(隐式类型转换)整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。转换从低级到高级。自动转换有以下规律:小的类型自动转化为大…

鸟哥linux 私房菜

对于任何系统如果我们要加快系统性能,内存的大小很重要,这个影响很大。尤其是对Linux的服务器环境。 CPU就像大脑而内存就像心脏和肚子之类的 一开始我是这么认为的,看完后才知道内存和硬盘也是大脑的一部分,内存就是处理大脑信息…

你知道GNU C 对C语言的扩展吗?

为了方便使用,GNU C在标准C语言的基础上进行了部分方便开发的扩展。这里讲解一些开发中可能会用到的,或者使用频率比较高的内容。零长度数组和变量长度数组GNU C 允许使用零长度数组,比如:char data[0];GNU C 允许使用一个变量定义…

java 反射 内存_Java内存到反射入门

Java内存到反射入门(一)初识Java内存平常我们最常提到的的JAVA分区是这三个分区其中方法区是一个特殊的堆,功能如图上所示。初识反射:框架设计的灵魂反射的功能:将类的各个组成部分封装为对象,并在程序运行的过程中可以调用它们。…

stopping hbasecat: /tmp/hbase-elastic-master.pid: 没有那个文件或目录

stop-hbase.sh 挂了。。。 原因其实也简单,默认情况下hbase的pid文件保存在/tmp目录下,/tmp目录下的文件很容易丢失,不知道为什么他不会自动创建一个非临时目录,大概是因为权限不好控制,需要手动来? 修改为…

工作和在学校最大的区别是什么?

很多人在学校的时候过得很舒服,但是一旦进入工作状态,或者说职场状态的时候,就会表现的不是那么好。或者紧张、或者迷茫,学校和职场是两种不同的环境,需要我们调整下,一下是朱老师的文章,希望对…

莞尔一笑

当ATM机发善心的时候…… 看,连冷冰冰的机器都有善心,可现实中的有些人………… 有一次ATM机取400元吐出4000元,银行呼吁市民还钱。之后银行收到一封信,内容如下: 1、请在我规定的时间到我家来取,时间是早上…

java查询多条_Mybatis查询多条记录并返回List集合的方法

实体对象如下:/**使用lobmok插件*/GetterSetterNoArgsConstructorToStringEqualsAndHashCodepublic class Vendor {private String vend_id;private String vend_name;private String vend_address;private String vend_city;private String vend_state;private String vend_zi…

服务容错模式

0.背景 随着服务框架和服务治理体系的逐步成熟,服务化已成为系统设计的趋势。随着业务复杂度的增加,依赖的服务也逐步增加,出现了不少由于服务调用出现异常问题而导致的重大事故,如: 1)系统依赖的某个服务发…

从大学到结婚,我和小云的这13年

看了龙哥的文章,感触很深,我有好几次想写一篇我和小云的文章,记录下自己和小云这些年一起经历的很多事情,但是每每都停下来去做了觉得更重要的其他事情,这次真的决定要写了。我和小云是大学同学,我们大一认…