Uniapp Base64码 播放音频(MP3)
其他地方调用更多功能请查阅【官方文档】
·
好多人说以下代码播放不了MP3,我从源代码里复制了一份,代码迭代太多了可能更新不及。
以下是最新的代码,在生产环境中已经应用验证了的
(我记得没错的话,使用http请求数据的时候播放不出来,所以用了文件流的形式,具体原因也不记得了,有大佬的解释一下的话可以评论,供大家学习,此处抱拳)
onRequestVoice(url) {
let that = this
console.log('请求语音==URL='+url)
uni.downloadFile({
url: url,
header: {
'X-Access-Token': that.token
},
success: (res) => {
/* 此处做拦截 界面已经关闭 但是语音还有可能会触发
所以写定isshowView标志位
*/
if (!that.isshowView) {
return
}
if (res.statusCode == 200) {
let mp3url = res.tempFilePath
let mp3data = mp3url
that.innerAudioContext.src = mp3data;
that.innerAudioContext.autoplay = true
that.innerAudioContext.onPlay(() => {
that.isAudoplaying = true;
console.log('播放开始')
});
that.innerAudioContext.onEnded(() => {
that.onStopAudio()
})
that.innerAudioContext.onError((res) => {
console.log('播放音频失败' + JSON.stringify(res));
that.onStopAudio()
})
that.innerAudioContext.play()
}
},
fail: (err) => {
that.$u.toast('播放失败')
console.log('语音流失败=' + JSON.stringify(err))
},
complete: () => {
that.onStopAudio()
console.log('语音流结束...')
}
})
}
-----------------------以下弃用代码----------------------------
let innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
innerAudioContext.src = 'data:audio/mp3;base64,'+base64Mp3.replace(/[\r\n]/g, "");
innerAudioContext.onPlay(() => {
console.log('开始播放');
});
其他地方调用
innerAudioContext .play();
更多功能请查阅【官方文档】
更多推荐
已为社区贡献2条内容
所有评论(0)