您好,欢迎访问一九零五行业门户网

如何解决uniapp播放声音出错问题

uniapp播放声音出错的解决办法:1、打开相应的代码文件,然后直接执行对象play方法,替换原来的src路径;2、更新开发工具版本即可。
本教程操作环境:windows7系统、uni-app2.5.1版本,dell g3电脑。
uni-app 语音文件播放问题,inneraudiocontext 无法销毁 !!!
uni-app 语音createinneraudiocontext 对象 无法销毁 还闪退!!!
今天打包发现语音无法播放了,于是找了下原因,记得这个问题已经处理过了,所以很快的找到了问题,项目用错了,用的原来的进行打包,这个错误真的是不可原谅。
特此今天记录一下语音无法播放的错误。 语音播放 用的内置的 uni.createinneraudiocontext(); 来创建的,播放就报错,还闪退。
贴下代码,我是这么写的。当调取到当前的方法,直接就将代码贴上吭,这是错误的,可别直接复制,兄dei。
<script> const inneraudiocontext = uni.createinneraudiocontext();data() { return {```}; }, methods: { hechengaudio(audiopram) { // inneraudiocontext.stop(); var dd = audiopram.replace(/<\/?.+?>/g, ""); audiopram = dd.replace(/ /g, ""); //dds为得到后的内容 if (audiopram != this.startaudio) { this.startpage = false; } var url = this.getmp3 + 'cuid=' + uni.getsysteminfosync().version + '&lan=zh&ctp=1&tok=' + this.$token() + '&tex=' + audiopram + '&vol=5&per=0&spd=6&pit=5&aue=3'; // console.log(json.stringify(ressave)); console.log(url); // #ifdef app-plus // 下面这两句是重点, 拿本本记下.............. if (inneraudiocontext != undefined) { inneraudiocontext.stop(); } inneraudiocontext = uni.createinneraudiocontext(); // 上面这两句是重点, 拿本本记下.............. this.pagevalue = this.value; console.log('src是空的吗 -----------' + url) inneraudiocontext.stop(); inneraudiocontext.src = url; inneraudiocontext.play();// if (url != '') {// inneraudiocontext.play();// } else {// console.log('src是空的吗 -----------' + url)// uni.showtoast({// title: 'src是空的 不能执行',// mask: true,// duration: 2000,// icon: "none"// });// // return// } inneraudiocontext.onplay(() => { console.log('开始播放') }) inneraudiocontext.onstop(() => { console.log('i am onstop') //播放停止,销毁该实例 // inneraudiocontext.stop() }) inneraudiocontext.onended(() => { console.log('i am onended') //播放结束,销毁该实例 // inneraudiocontext.stop() console.log('已执行destory()') }) inneraudiocontext.onerror((res) => { console.log(result.errmsg) console.log(result.errcode) // inneraudiocontext.stop() }) // #endif // #ifdef mp-weixin var that = this; uni.downloadfile({ url: url, success(res) { if (inneraudiocontext != undefined) { inneraudiocontext.stop(); } inneraudiocontext = uni.createinneraudiocontext(); that.pagevalue = that.value; inneraudiocontext.src = res.tempfilepath; inneraudiocontext.play(); inneraudiocontext.onplay(() => { console.log('开始播放') }) inneraudiocontext.onstop(() => { console.log('i am onstop') inneraudiocontext.stop() //播放停止,销毁该实例 inneraudiocontext.stop() }) inneraudiocontext.onended(() => { console.log('i am onended') //播放结束,销毁该实例 inneraudiocontext.stop() console.log('已执行destory()') }) inneraudiocontext.onerror((res) => { console.log(result.errmsg) console.log(result.errcode) inneraudiocontext.stop() }) } }) // #endif }, }, }</script>
看到上面的两行代码 ,记住千万不要销毁了,直接 执行对象play 方法就好。 这样用的都是用一个对象,他这样会默认替换原来的src 路径,可以直接播放.
还有一个原因是,开发工具版本太老,我现在版本是 1.6.2 ,主要是这个版本流程,问题少。
下面代码可以复制
<script> const inneraudiocontext = uni.createinneraudiocontext();data() { return {```}; }, methods: { hechengaudio(audiopram) { // inneraudiocontext.stop(); var dd = audiopram.replace(/<\/?.+?>/g, ""); audiopram = dd.replace(/ /g, ""); //dds为得到后的内容 if (audiopram != this.startaudio) { this.startpage = false; } var url = this.getmp3 + 'cuid=' + uni.getsysteminfosync().version + '&lan=zh&ctp=1&tok=' + this.$token() + '&tex=' + audiopram + '&vol=5&per=0&spd=6&pit=5&aue=3'; // console.log(json.stringify(ressave)); console.log(url); // #ifdef app-plus this.pagevalue = this.value; console.log('src是空的吗 -----------' + url) inneraudiocontext.stop(); inneraudiocontext.src = url; inneraudiocontext.play(); inneraudiocontext.onplay(() => { console.log('开始播放') }) inneraudiocontext.onstop(() => { console.log('i am onstop') //播放停止,销毁该实例 // inneraudiocontext.stop() }) inneraudiocontext.onended(() => { console.log('i am onended') //播放结束,销毁该实例 // inneraudiocontext.stop() console.log('已执行destory()') }) inneraudiocontext.onerror((res) => { console.log(result.errmsg) console.log(result.errcode) // inneraudiocontext.stop() }) // #endif // #ifdef mp-weixin var that = this; uni.downloadfile({ url: url, success(res) { if (inneraudiocontext != undefined) { inneraudiocontext.stop(); } inneraudiocontext = uni.createinneraudiocontext(); that.pagevalue = that.value; inneraudiocontext.src = res.tempfilepath; inneraudiocontext.play(); inneraudiocontext.onplay(() => { console.log('开始播放') }) inneraudiocontext.onstop(() => { console.log('i am onstop') inneraudiocontext.stop() //播放停止,销毁该实例 inneraudiocontext.stop() }) inneraudiocontext.onended(() => { console.log('i am onended') //播放结束,销毁该实例 inneraudiocontext.stop() console.log('已执行destory()') }) inneraudiocontext.onerror((res) => { console.log(result.errmsg) console.log(result.errcode) inneraudiocontext.stop() }) } }) // #endif }, }, }</script>
推荐:《uniapp教程》
以上就是如何解决uniapp播放声音出错问题的详细内容。
其它类似信息

推荐信息