- 当前 Bug 的表现(可附上截图)
开发好的功能,在2019-01-08那天在真机上还能正常播放,今天不能在真机上正常播放了。但是目前在微信开发者工具中正常播放
- 预期表现
希望正常播放
- 复现路径
- 提供一个最简复现 Demo
playAudio() {
let audioCtx = wx.createInnerAudioContext();
let src = this.data.tempPath;
console.log(src);
audioCtx.src = src;
this.setData({
'audioCtx': audioCtx,
'currentDuration': '00:00',
'percentage': 0
});
audioCtx.play();
audioCtx.onPlay(() => {
let totalTime = this.data.duration;
let count = 0;
this.setData({
'play': true
});
let audio = setInterval(() => {
if (count >= totalTime) {
audioCtx.pause();
clearInterval(audio);
this.setData({
'play': false,
'percentage': 100
});
} else {
let showDuration;
count++;
let min = parseInt(count / 60);
let senconds = Math.ceil(count % 60);
let newMin, newSenconds;
if (min < 10) {
newMin = '0' + min;
} else {
newMin = min;
}
if (senconds < 10) {
newSenconds = '0' + senconds;
} else {
newSenconds = senconds;
}
showDuration = newMin + ':' + newSenconds;
this.setData({
'currentDuration': showDuration,
'percentage': (count / totalTime) * 100
});
}
}, 1000);
this.setData({
'audioInterval': audio
});
})
},
不能播放报错信息是什么?麻烦提供能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
不能播放没有报错信息,没有任何报错信息。
audioCtx.play();执行没有报错 但是没有执行播放
然后监听onPlay()事件没有触发
//界面
<view wx:if="{{item.AudioInfo!=undefined}}" class='video' data-url="{{item.AudioInfo.Url}}" data-duration="{{item.AudioInfo.duration}}" bindtap='workContAudio'>
<image src='/assets/images/voice-icon.png' mode='aspectFit' class='voice-icon' />
<text>{{item.AudioInfo.durationShow}}</text>
</view>
//item.AudioInfo={
Ext:".mp3"
Name:"wx2031dc7e159a6d64.o6zAJs0PAAcES9GL1WoyiZ5cpXIk.eB2TIYugbgZr17cef180d558ada819276787a4339401.durationTime=3260.mp3"
Size:63
Url:"https://upload.jxxhy.cn/uploads/mail/20190108/wx2031dc7e159a6d64.o6zAJs0PAAcES9GL1WoyiZ5cpXIk.eB2TIYugbgZr17cef180d558ada819276787a4339401.durationTime=3260.mp3"
duration:3
durationShow:"3''"
mediaType:"audio"
}
//js
workContAudio(e) {
this.setData({
'showContPlay': true
});
let src = e.currentTarget.dataset.url;
let timeLen = e.currentTarget.dataset.duration; //数字
let timeStr = this.formatTimeToStr(timeLen); // 00:00
this.setData({
'tempPath': src,
'duration': timeLen,
'recordDuration': timeStr
});
this.playAudio();
},
/**
* 播放录音
*/
playAudio() {
let audioCtx = wx.createInnerAudioContext();
let src = this.data.tempPath;
audioCtx.src = src;
this.setData({
'audioCtx': audioCtx,
'currentDuration': '00:00',
'percentage': 0
});
audioCtx.play();
console.log(this.data);
audioCtx.onPlay(() => {
let totalTime = this.data.duration;
let count = 0;
this.setData({
'play': true
});
let audio = setInterval(() => {
if (count >= totalTime) {
audioCtx.pause();
clearInterval(audio);
this.setData({
'play': false,
'percentage': 100
});
} else {
let showDuration;
count++;
let min = parseInt(count / 60);
let senconds = Math.ceil(count % 60);
let newMin, newSenconds;
if (min < 10) {
newMin = '0' + min;
} else {
newMin = min;
}
if (senconds < 10) {
newSenconds = '0' + senconds;
} else {
newSenconds = senconds;
}
showDuration = newMin + ':' + newSenconds;
this.setData({
'currentDuration': showDuration,
'percentage': (count / totalTime) * 100
});
}
}, 1000);
this.setData({
'audioInterval': audio
});
})
},
请按格式提供代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
https://developers.weixin.qq.com/s/sZbvAimg7q5B我这都需要一些必要信息,才行,token以及绑定信息,
麻烦提供可以直接使用的代码片段哈,把那些不必要的逻辑去掉,现在提供的代码片段无法正常使用呢
完全没办法呢,你能不能帮我处理一下,把我那个简洁一下
我的真机也不能播放音频,在模拟器上可以正常播放,真机上播放官方demo上的链接,需要插上耳机才有声音,拔下耳机再插上就没有声音了,播放本地音频插不插耳机都没有声音,以上,在模拟器上都有声音
我这边更无语,真机测试有声音,开发版,体验版都没声音,且不报任何错误,实在郁闷,请问你的问题解决了吗
没有呢,你解决了吗?
加了个定时器,语音延迟播放,问题基本解决
我也遇到了相同的问题,也是用的wx.createInnerAudioContext(),有时候语音会正常播放,有时候没有播放,且未报任何错误,下面是我的代码,我的机型是iphone6
var bgm = wx.createInnerAudioContext();
bgm.autoplay = true;
bgm.loop = false;
bgm.src ="mp3/1.mp3";
这个问题我这边又发现没有了。就是三个手机都试了,但是之前发的那个也确实还是播放不了,但是新发的都没有问题了。
还有没有报错信息,你用这个监听错误信息的事件了吗,我当时就是忘了写这个监听事件 bgm.onError((err)=>{ console.log(err) })
谢谢,我试试