uniapp的微信播放不支持本地文件,起始微信原生语言是支持的 所以在编写uniapp代码时 要写两套逻辑 // #ifdef MP-WEIXIN 微信原封不变的自己写法 //#endif // #ifndef MP-WEIXIN 其他写法 //#endif
这样可实现 发布到微信后 微信原封不动的使用自己写法
注意uniapp的非微信端 如网页 /../../../static/audio/'+name 使用这种方式才能读取播放,就是往上倒目录位置,不倒目录不对,两种方式试剂得到的目录路径效果如下
const url = '/../../../static/audio/'+name
const url = '/static/audio/'+name
编译后得出http://localhost:5173/pages/tabBar/grid/static/audio/ui_click_12.wav编译后得出这样他播放不了
以下是uniapp代码
const play = (name) => {
// #ifdef MP-WEIXIN
playMusicWEIXIN(name)
console.log('微信播放',name)
//#endif
// #ifndef MP-WEIXIN
const url = '/../../../static/audio/'+name
console.log('其他播放 ', url)
let music =uni.createInnerAudioContext()
music.pause();
music.destroy()
music = null
music = uni.createInnerAudioContext();
music.autoplay = true;
music.src =url ;
music.onPlay(() => {
console.log('开始播放');
});
music.onError((res) => {
if(res){
console.log(res.errMsg);
console.log(res.errCode);
}
});
//#endif
}
function playMusicWEIXIN(name) {
let music = wx.createInnerAudioContext({
useWebAudioImplement: false // 是否使用 WebAudio 作为底层音频驱动,默认关闭。对于短音频、播放频繁的音频建议开启此选项,开启后将获得更优的性能表现。由于开启此选项后也会带来一定的内存增长,因此对于长音频建议关闭此选项
})
music.autoplay = false
music.tilte = 'boom.mp3'
music.src = '/static/audio/' + name
music.onPlay(() => {
console.log('开始播放:' + name)
})
music.onError((res) => {
console.log('播放errMsg:' + res.errMsg)
console.log('播放errMsg:' + res.errCode)
})
music.onEnded((res) => {
console.log('销毁:')
music.destroy()
})
music.play()
}