uniapp 音频播放错误: {"errmsg":"mediaerror","errcode":-99} 如何解决?

在uniapp中使用音频播放时遇到错误:{“errmsg”:“mediaerror”,“errcode”:-99},尝试了多种方式都无法解决。具体表现为音频文件无法正常播放,控制台报错如上。请问这个错误是什么原因导致的?有没有遇到类似问题的朋友能分享解决方案?音频文件格式是MP3,路径确认没有问题,在真机和模拟器上都会出现这个错误。

2 回复

检查音频文件路径和格式,确保支持MP3等常见格式。若为网络音频,需配置合法域名。尝试使用uni.createInnerAudioContext()替代uni.playVoice()。


在UniApp中,音频播放错误 {"errmsg":"mediaerror","errcode":-99} 通常表示媒体资源加载或播放失败。以下是常见原因和解决方法:

1. 检查音频文件路径

  • 确保音频文件路径正确,支持本地路径(如 /static/audio.mp3)或有效的网络URL。
  • 示例代码
    const audio = uni.createInnerAudioContext();
    audio.src = '/static/audio.mp3'; // 本地路径示例
    // 或 audio.src = 'https://example.com/audio.mp3'; // 网络路径
    audio.play();
    

2. 验证音频文件格式

  • 确保音频格式兼容(如 MP3、AAC)。部分设备可能不支持特定编码,可尝试转换格式。

3. 处理跨域问题(网络资源)

  • 若使用网络URL,确保服务器配置了CORS(跨域资源共享),允许资源被加载。

4. 预加载音频

  • 使用 onCanplay 事件确保音频可播放后再触发操作:
    audio.onCanplay(() => {
      audio.play();
    });
    audio.src = '你的音频路径';
    

5. 错误监听与重试

  • 监听错误事件并尝试重新加载或切换备用资源:
    audio.onError((res) => {
      console.error('播放失败:', res);
      // 可选:重试或切换URL
      audio.src = '备用音频路径';
      audio.play();
    });
    

6. 检查文件完整性

  • 确认音频文件未损坏,可通过其他播放器测试。

7. 权限问题(仅App端)

  • 在App端,确保应用有音频播放权限(Android需在manifest中配置)。

完整示例代码:

const audio = uni.createInnerAudioContext();
audio.src = '/static/audio.mp3';
audio.onCanplay(() => {
  audio.play();
});
audio.onError((res) => {
  console.error('错误:', res);
  // 处理错误逻辑
});

通过以上步骤排查,通常可解决大多数 -99 错误。如果问题持续,检查控制台日志或尝试更换音频文件测试。

回到顶部