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 错误。如果问题持续,检查控制台日志或尝试更换音频文件测试。

