uni-app播放外链音频报错
uni-app播放外链音频报错
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | 12.6.3 | HBuilderX |
bug描述:
使用uni.createInnerAudioContext 播放外链音频
报错:Uncaught (in promise) DOMException: Failed to load because no supported source was found.(env: macOS,mp,1.06.2309182; lib: 3.2.5)
this.innerAudioContext = uni.createInnerAudioContext();
this.innerAudioContext.src = item.src
this.innerAudioContext.loop = true
this.innerAudioContext.obeyMuteSwitch = false
this.sessionCategory = "playback"
this.innerAudioContext.play()
wx.setInnerAudioOption({obeyMuteSwitch: false}) //手机静音仍然可播放
this.innerAudioContext.onPlay(()=>{
console.log("播放")
this.playIndex = index
})
把链接中的中文干掉
不行的。有没有中文都不能播放
回复 x***@sina.cn: 你来个没中文的,我试试
这个是放在microsoft one上的套壳网站,要登录microsoft才能播放
真坑,我换个云地址
回复 x***@sina.cn: 对,你那个示例里播放不了,就是因为中文你的原因,这个估计就是访问不了的问题
有中文或者有空格不能播放吗,是 uniapp 的转换问题,还是小程序本身的问题呢?
回复 DCloud_UNI_OttoJi: 微信小程序就有这问题,在他们的社区看到过
在 uni-app
中播放外链音频时,可能会遇到一些报错或问题。以下是一些常见的问题及其解决方法:
1. 跨域问题
如果你尝试播放的外链音频资源位于不同的域名下,可能会遇到跨域问题。浏览器通常会阻止跨域请求,除非服务器明确允许。
解决方法:
- 确保音频资源的服务器设置了正确的
CORS
头,允许你的域名访问资源。 - 如果是你自己的服务器,可以在服务器端设置
Access-Control-Allow-Origin
头,允许跨域请求。
2. 音频格式不支持
某些浏览器可能不支持特定的音频格式。例如,某些浏览器可能不支持 MP3
或 OGG
格式。
解决方法:
- 确保你提供的音频格式是广泛支持的,如
MP3
或AAC
。 - 可以提供多种格式的音频文件,确保在不同浏览器中都能正常播放。
3. 音频链接无效
如果音频链接无效或返回了错误的响应(如 404 错误),播放器将无法加载音频。
解决方法:
- 检查音频链接是否正确,确保链接可以正常访问。
- 使用开发者工具查看网络请求,确认音频资源是否成功加载。
4. uni.createInnerAudioContext() 使用问题
在 uni-app
中,通常使用 uni.createInnerAudioContext()
来创建音频播放器。如果你在使用时遇到问题,可能是由于配置不当或代码错误。
解决方法:
- 确保你正确初始化了
uni.createInnerAudioContext()
。 - 确保你正确设置了
src
属性,并监听了相关事件。
示例代码:
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.src = 'https://example.com/your-audio-file.mp3';
innerAudioContext.play();
innerAudioContext.onPlay(() => {
console.log('开始播放');
});
innerAudioContext.onError((err) => {
console.error('播放错误', err);
});
5. 网络问题
如果网络连接不稳定,可能会导致音频加载失败或播放中断。
解决方法:
- 确保设备网络连接正常。
- 如果是移动端应用,可以提示用户检查网络连接。
6. H5 端的安全策略
在某些情况下,浏览器可能会阻止自动播放音频,特别是如果用户没有与页面进行交互。
解决方法:
- 确保音频播放是在用户交互(如点击按钮)后触发,而不是在页面加载时自动播放。
7. 小程序端的限制
在微信小程序中,播放外链音频可能会受到一些限制。例如,音频文件可能需要在小程序的后台配置域名白名单。
解决方法:
- 确保音频文件的域名已经在小程序后台的
request
合法域名列表中配置。
8. 音频文件过大
如果音频文件过大,可能会导致加载时间过长或播放卡顿。
解决方法:
- 压缩音频文件,减小文件大小。
- 确保服务器支持
Range
请求,以便支持流式播放。
9. 播放器事件监听
如果没有正确监听播放器的错误事件,可能会导致问题无法及时发现。
解决方法:
- 确保监听了
onError
事件,并在事件回调中处理错误。
innerAudioContext.onError((err) => {
console.error('播放错误', err);
});