uni-app播放外链音频报错

发布于 1周前 作者 caililin 来自 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  
})

11 回复

把链接中的中文干掉


不行的。有没有中文都不能播放

回复 x***@sina.cn: 你来个没中文的,我试试

这个是放在microsoft one上的套壳网站,要登录microsoft才能播放

真坑,我换个云地址

回复 x***@sina.cn: 对,你那个示例里播放不了,就是因为中文你的原因,这个估计就是访问不了的问题

有中文或者有空格不能播放吗,是 uniapp 的转换问题,还是小程序本身的问题呢?

回复 DCloud_UNI_OttoJi: 微信小程序就有这问题,在他们的社区看到过

谢谢套马杆的套子。

uni-app 中播放外链音频时,可能会遇到一些报错或问题。以下是一些常见的问题及其解决方法:

1. 跨域问题

如果你尝试播放的外链音频资源位于不同的域名下,可能会遇到跨域问题。浏览器通常会阻止跨域请求,除非服务器明确允许。

解决方法:

  • 确保音频资源的服务器设置了正确的 CORS 头,允许你的域名访问资源。
  • 如果是你自己的服务器,可以在服务器端设置 Access-Control-Allow-Origin 头,允许跨域请求。

2. 音频格式不支持

某些浏览器可能不支持特定的音频格式。例如,某些浏览器可能不支持 MP3OGG 格式。

解决方法:

  • 确保你提供的音频格式是广泛支持的,如 MP3AAC
  • 可以提供多种格式的音频文件,确保在不同浏览器中都能正常播放。

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);
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!