不知道为什么,有遇到这个问题的朋友吗?
var muzic = uni.createInnerAudioContext();
muzic.volume = 1;
muzic.obeyMuteSwitch =false;
muzic.src = "/static/radio/electric.mp3";
muzic.seek(3);
muzic.play();
setTimeout(function() {
muzic.destroy();
}, 300)
不知道为什么,有遇到这个问题的朋友吗?
var muzic = uni.createInnerAudioContext();
muzic.volume = 1;
muzic.obeyMuteSwitch =false;
muzic.src = "/static/radio/electric.mp3";
muzic.seek(3);
muzic.play();
setTimeout(function() {
muzic.destroy();
}, 300)
问题解决了,经测试,下面的代码可以解决问题。希望大家的问题也能得到解决。
let src = '../../static/voice/'+ v +'.mp3';
//实例化声音
const Audio = uni.createInnerAudioContext();
Audio.autoplay=true;
Audio.src = src;//音频地址
Audio.onError((res) => {
console.log(res.errMsg);
console.log(res.errCode);
Audio.destroy();//发生错误后,销毁实例
});
Audio.onPause(function() {
console.log('end');
Audio.destroy();//这里是播放暂停后,销毁实例
});
Audio.onStop(function() {
console.log('stop');
Audio.destroy();//这里是播放停止后,销毁实例
});
Audio.onEnded(function() {
console.log('ended');
Audio.destroy();//这里是播放结束后,销毁实例
});
哪端?
回复 onmyway911: 你确认是自定义组件编译模式吗?manifest里app-plus节点下usingComponents值为true
2019-07-04 18:00
onmyway911 (作者)
回复 DCloud_UNI_GSQ: manifest.json>
app常用其它设置>编译模式>checkbox自定义组件模式选中
但是在源码模式下没有找到usingComponents值
2019-07-04 20:03
onmyway911 (作者)
回复 DCloud_UNI_GSQ: 我在网上看到过其他人对于微信小程序audio的问题说明,基本上是一样的问题:
https://segmentfault.com/a/1190000014469604
2019-07-08 23:58
回复 DCloud_UNI_GSQ: 已经 "usingComponents" : true,只实例化一次,只播放一次声音,后面就播放不了(没声音)也没报错
2019-10-24 17:46
我也遇到了,循环播放报错-99 media error
自定义组件编译模式
每次循环会实例化,播放完后我也会destroy,但是多次后仍然会报那个错
如果在onLoad 只实例化一次的话,那么循环就会变成第一次读第一个音频,第二次读第二个音频,第三次读第五个音频。
@DCloud_UNI_GSQ 请问一下,这个问题解决了吗?能提供一下解决思路么?我们做的是语音听单系统,用着用着就闪退、无音,客户反馈很差,在线等解决方案
回复 DCloud_UNI_GSQ: 你可以把官网的示例封个函数,多执行几次,就会出现这种问题,就是一直创建——播放——停止——销毁,再创建——播放——停止——销毁,一定次数之后开始报错、闪退
2020-01-13 11:20
回复 DCloud_UNI_GSQ: https://ask.dcloud.net.cn/question/79350,https://ask.dcloud.net.cn/question/1583,你看好多类似的这种问题,很严重,随便搜一下createInnerAudioContext关键词就能搜到多次播放错误的问题
2020-01-13 11:23
回复 DCloud_UNI_GSQ: 刚才调试报了个错,时不时的就会报这种错误,不知道对你有没有帮助:
10:44:50.716 [JS Framework] Failed to execute the callback function:
10:44:50.738 TypeError: undefined is not an object (evaluating 'i[t===o[0]&&i.isPaused?"resume":t]')
10:44:50.993 reportJSException >>>> exception function:callJS, exception:JavaScript execute error!Exception: TypeError: undefined is not an object (evaluating 'i[t===o[0]&&i.isPaused?"resume":t]')
10:44:51.015 operateAudio@weex createInstanceContext:3:53081
10:44:51.035 invokeHandler@weex createInstanceContext:3:87999
10:44:51.056 weex createInstanceContext:4:1471
10:44:51.079 invoke@weex createInstanceContext:4:1516
10:44:51.100 invoke@weex createInstanceContext:4:105145
10:44:51.124 X@weex createInstanceContext:4:162855
10:44:51.148 weex createInstanceContext:4:170308
10:44:51.169 gc@weex createInstanceContext:4:311501
10:44:51.191 weex createInstanceContext:4:314358
10:44:51.211 (weex framework):1:202118
10:44:51.234 consume@(weex framework):1:1383
10:44:51.254 map@[native code]
10:44:51.298 getTemplateInfo== template md5 dace2c736ef985312fbbbf5d309b4e4 length 3157430 base64 md5 DazixzbvmFMS+7v10wm05A== response header {"templateSourceBase64MD5":["DazixzbvmFMS+7v10wm05A=="],"templateSourceMD5":["dace2c736ef985312fbbbf5d309b4e4"]}
2020-01-13 11:24
回复 JerrySirCom: 对,没错是有这种情况,createInnerAudioContext多次播放在安卓下会突然停止,在app端我使用了plus.audio.createPlayer 这次在安卓下播放数十次后会闪退。苹果目前没有问题
2020-01-13 18:44
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {
this.audioPlay();
},
methods: {
audioPlay() {
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
innerAudioContext.src = 'https://ltech-hongqi.oss-cn-zhangjiakou.aliyuncs.com/dong.mp3';
innerAudioContext.onPlay(() => {
console.log('开始播放');
});
innerAudioContext.onError((res) => {
console.log(res.errMsg);
console.log(res.errCode);
});
innerAudioContext.onEnded(function(){
this.audioPlay();
}.bind(this))
}
}
}
输出
15:24:53.877 应用【audioTest】已启动...
15:25:00.951 App Launch at App.vue:4
15:25:00.971 App Show at App.vue:7
15:25:01.041 App Show at App.vue:7
15:25:01.535 开始播放 at pages/index/index.vue:26
15:25:02.756 开始播放 at pages/index/index.vue:26
15:25:03.907 开始播放 at pages/index/index.vue:26
15:25:06.030 开始播放 at pages/index/index.vue:26
15:25:07.194 开始播放 at pages/index/index.vue:26
15:25:08.359 开始播放 at pages/index/index.vue:26
15:25:09.574 开始播放 at pages/index/index.vue:26
15:25:10.797 开始播放 at pages/index/index.vue:26
15:25:11.993 开始播放 at pages/index/index.vue:26
15:25:13.153 开始播放 at pages/index/index.vue:26
15:25:14.347 开始播放 at pages/index/index.vue:26
15:25:15.554 开始播放 at pages/index/index.vue:26
15:25:16.720 开始播放 at pages/index/index.vue:26
15:25:18.204 开始播放 at pages/index/index.vue:26
15:25:19.388 开始播放 at pages/index/index.vue:26
15:25:20.576 开始播放 at pages/index/index.vue:26
15:25:21.803 开始播放 at pages/index/index.vue:26
15:25:22.956 开始播放 at pages/index/index.vue:26
15:25:24.100 开始播放 at pages/index/index.vue:26
15:25:25.241 开始播放 at pages/index/index.vue:26
15:25:26.355 开始播放 at pages/index/index.vue:26
15:25:27.569 开始播放 at pages/index/index.vue:26
15:25:28.973 开始播放 at pages/index/index.vue:26
15:25:30.163 开始播放 at pages/index/index.vue:26
15:25:31.320 开始播放 at pages/index/index.vue:26
15:25:32.506 开始播放 at pages/index/index.vue:26
15:25:33.948 开始播放 at pages/index/index.vue:26
15:25:35.115 开始播放 at pages/index/index.vue:26
15:25:36.334 开始播放 at pages/index/index.vue:26
15:25:37.526 开始播放 at pages/index/index.vue:26
15:25:38.692 开始播放 at pages/index/index.vue:26
15:25:39.906 开始播放 at pages/index/index.vue:26
15:25:41.112 开始播放 at pages/index/index.vue:26
15:25:42.318 开始播放 at pages/index/index.vue:26
15:25:43.764 开始播放 at pages/index/index.vue:26
15:25:44.950 开始播放 at pages/index/index.vue:26
15:25:46.163 开始播放 at pages/index/index.vue:26
15:25:47.369 开始播放 at pages/index/index.vue:26
15:25:48.555 开始播放 at pages/index/index.vue:26
15:25:49.708 开始播放 at pages/index/index.vue:26
15:25:50.909 开始播放 at pages/index/index.vue:26
15:25:50.956 MediaError at pages/index/index.vue:29
15:25:50.978 [Number] -99 at pages/index/index.vue:30
打开Logcat抓了一堆日志
2020-01-14 15:33:02.708 30547-30562/? E/AndroidRuntime: FATAL EXCEPTION: WeexJSBridgeThread
Process: io.dcloud.HBuilder, PID: 30547
java.lang.IllegalStateException
at android.media.MediaPlayer._pause(Native Method)
at android.media.MediaPlayer.pause(MediaPlayer.java:1440)
at io.dcloud.feature.audio.AudioPlayer.pause(AudioPlayer.java:329)
at io.dcloud.feature.audio.AudioPlayer$1.onAudioFocusChange(AudioPlayer.java:74)
at android.media.AudioManager$ServiceEventHandlerDelegate$1.handleMessage(AudioManager.java:2336)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:201)
at android.os.HandlerThread.run(HandlerThread.java:65)
回复 DCloud_Android_zl: 还有,会在alpha版本修复这个问题吗?我打算先给用户打个包去用,不然修复版本发布周期太长,客户那边受不了
2020-01-14 17:29
90后菜鸟 - 90后
多次之后直接 -99
HBuilder X 2.6.5 Android
function playAudio(url) {
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
innerAudioContext.src = url;
innerAudioContext.onPlay(() => {
console.log("Audio play success!");
});
innerAudioContext.onError((res) => {
// console.log(res.errMsg);
console.log(res.errCode);
console.log("Audio play failed: " + res.errMsg);
});
}
14:37:30.975 Audio play success! at common\helper.js:9
14:37:32.060 Audio play success! at common\helper.js:9
14:37:32.840 Audio play success! at common\helper.js:9
14:37:33.659 Audio play success! at common\helper.js:9
14:37:34.436 Audio play success! at common\helper.js:9
14:37:35.294 Audio play success! at common\helper.js:9
14:37:36.195 Audio play success! at common\helper.js:9
14:37:37.178 Audio play success! at common\helper.js:9
14:37:38.233 Audio play success! at common\helper.js:9
14:37:39.733 Audio play success! at common\helper.js:9
14:37:40.679 Audio play success! at common\helper.js:9
14:37:41.652 Audio play success! at common\helper.js:9
14:37:42.775 Audio play success! at common\helper.js:9
14:37:43.536 Audio play success! at common\helper.js:9
14:37:44.254 Audio play success! at common\helper.js:9
14:37:44.275 [Number] -99 at common\helper.js:13
14:37:44.296 Audio play failed: MediaError at common\helper.js:14
这个uni.createInnerAudioContext都多久了还没解决
https://ask.dcloud.net.cn/question/91695
我报的这个也没人理会客户都想把我撕碎了
var innerAudioContext = uni.createInnerAudioContext(); //创建播放器对象
innerAudioContext.autoplay=true
function PlayVoice(src) {
console.log('播放路径:'+url.url.titleurl+src)
innerAudioContext.src = url.url.titleurl+src; //选择播放的音频
innerAudioContext.play(); //执行播放
}
2020-04-06 16:31
我的问题解决了,尝试下面的代码?
let src = '../../static/voice/'+ v +'.mp3';
//实例化声音
const Audio = uni.createInnerAudioContext();
Audio.autoplay=true;
Audio.src = src;//音频地址
Audio.onError((res) => {
console.log(res.errMsg);
console.log(res.errCode);
Audio.destroy();//发生错误后,销毁实例
});
Audio.onPause(function() {
console.log('end');
Audio.destroy();//这里是播放暂停后,销毁实例
});
Audio.onStop(function() {
console.log('stop');
Audio.destroy();//这里是播放停止后,销毁实例
});
Audio.onEnded(function() {
console.log('ended');
Audio.destroy();//这里是播放结束后,销毁实例
});
2020-04-16 12:26
我也遇到类似问题,ANDROID,真机
我做的是一个计算器
就是按数字1,2,3,4,5,会发出模拟 1,2,3,4,5 这样的读音的
按着按着,后面就发不出声音了,代码大概如下
voice(v){
let src = '../../static/voice/'+ v +'.mp3';
//实例化声音
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.src = src;//音频地址
innerAudioContext.play();
innerAudioContext.onError((res) => {
console.log(res.errMsg);
console.log(res.errCode);
});
}
如果实例化是放在全局,那么,播放的声音是延时,也不对啊!
HX版本:2.6.13,ANDROID真机
也是报错 Mediaerror -99
回复 DCloud_UNI_GSQ: 问题解决了,谢谢,播放暂停或者结束后,销毁实例就可以了
Audio.onEnded(function() {
console.log('ended');
Audio.destroy();
});
2020-04-16 12:22
Audio.src ='URL?fileName='+s
Audio.onPlay(() => {
console.log('开始播放')
})
Audio.onError((res) => {
console.log(res.errMsg)
console.log(res)
Audio.destroy()
})
还是一样 多播放几次 就出现-99
语音组件实例化不要多次创建,播放语音只需要innerAudioContext.src和innerAudioContext.play()。如果用innerAudioContext.onPlay()会导致叠
目前仍存在的问题,在 app 模式,ios、android 都一样。
一次播放一个文件,通过切换 src 后 调用 play 播放。连续播放 本地的 小mp3文件 200 个以上后 ,播放速度会慢慢来越慢,直至没有声音。MP3文件 每个 都不超过 10k,时长1 秒左右。
开始时正常,每秒播放一个。到后来 play 调用后,要等很久才会有声音。
我们调用 play 前,通过 onended 监听 改变 临时变量的值,确保 上一个播放完后,再播放下一个。
估计 底层开发者没有做过 连续 大量播放 小 音频文件的测试。
目前的解决方案是,播发 几十个文件后,destory 掉innerAudioContext ,重新创建一个。
另外,微信小程序 的 wx.createInnerAudioContext ,在 pc 模式下,播放一个文件后,再播放就没有声音了。只能播放一次后,销毁对象,重新createInnerAudioContext。
x***@vip.qq.com
给力
2023-05-19 11:08