created(){
this.innerAudioContext = uni.createInnerAudioContext();
this.innerAudioContext.onPlay(() => {
console.log('开始播放');
});
this.innerAudioContext.onError(res => {
console.log(res.errMsg);
console.log(res.errCode);
});
},
methods:{
play(href){
this.innerAudioContext.src = href;
this.innerAudioContext.stop();
this.innerAudioContext.play();
}
}
- 发布:2021-02-20 16:09
- 更新:2021-06-05 20:44
- 阅读:3841
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: 11.2
HBuilderX类型: 正式
HBuilderX版本号: 3.1.2
手机系统: Android
手机系统版本号: Android 10
手机厂商: 安卓
手机机型: 10
页面类型: vue
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
一直点击播放即可,点击一次更换一个音频链接。
一直点击播放即可,点击一次更换一个音频链接。
预期结果:
预期应正常播放
预期应正常播放
实际结果:
不正常
不正常
bug描述:
音频播放错误: {"errMsg":"MediaError","errCode":-99}
音频链接正常,点击播放,播放十几个之后报错
然后后续音频和视频就都无法正常播放了(音频不出声音,视频没有声音来回跳动)
文档上也没有注明-99是个什么错误,什么情况下会出现这种错误呢??
created(){
this.innerAudioContext = uni.createInnerAudioContext();
this.innerAudioContext.onPlay(() => {
console.log('开始播放');
});
this.innerAudioContext.onError(res => {
console.log(res.errMsg);
console.log(res.errCode);
});
},
methods:{
play(href){
this.innerAudioContext.src = href;
this.innerAudioContext.stop();
this.innerAudioContext.play();
}
}
3 个回复
q***@qq.com - 湖南来欣科技有限公司
我不知道这算不算bug,但是我之前碰到过,在网上找到了解决方法
var music={
//因为这个音效听起来是de的声音,所以我取这个函数名,方便记忆音效,找的合适的场景就能想起来。
play_dede:function(){
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
innerAudioContext.src = '../../static/click.wav';
innerAudioContext.onPlay(() => {
// console.log('点击声');
});
innerAudioContext.onError((res) => {
console.log(res.errMsg);
console.log(res.errCode);
});
innerAudioContext.onPause(function() {
// console.log('end');
innerAudioContext.destroy();//音频播放停止后,就销毁实例
});
},
}
export default music;
x***@163.com
切换时清空src
5***@163.com
报-99 是因为生成的音频时长太短了;比如在语速10的情况下报长度为1~2的字符串;就会报错;;
解决:判断播报字符串长度<3时语速为5(或更小);否则为10左右