如图:
线下调试环境生成的url地址是:http://usr/34304988168032262.wav,图中代码可以正常播放
真机环境得到的地址是:wxfile://usr/34304988168032262.wav,图中代码无法播放出声音
a***@163.com
- 发布:2023-04-02 19:21
- 更新:2023-04-04 19:11
- 阅读:510
小程序 uni.createInnerAudioContext 在真机环境不能播放 wxfile:// 开头的文件,这是因为在真机环境下,wxfile:// 协议被微信禁止了。
解决方法是使用 uni.getFileSystemManager().getSavedFileList 方法获取本地文件的 filePath,然后使用 uni.createInnerAudioContext() 播放本地文件。示例代码如下:
uni.getFileSystemManager().getSavedFileList({
success: res => {
if (res.fileList.length) {
const filePath = res.fileList[0].filePath
const audio = uni.createInnerAudioContext()
audio.src = filePath
audio.play()
}
}
})
这样就可以在真机环境下播放本地音频文件了。需要注意的是,使用该方法播放本地音频文件需要用户先在小程序中保存该音频文件。
注意:
其中一个是使用uni.downloadFile()方法,将wxfile://路径转换成http://或https://路径,然后再进行播放。当然,这个方法需要你的服务器支持https,不过这个问题也可以通过使用uniCloud解决,它提供了一种快速方便地部署https的方法,可以很好地解决这个问题。