uniapp 出现 { "errmsg": "mediaerror", "errcode": -99 } 错误如何解决?
在uniapp开发中,调用媒体相关接口时出现错误提示:{ "errmsg": "mediaerror", "errcode": -99 },请问这个错误具体是什么原因导致的?应该如何解决?目前尝试了重新编译和更换真机调试,但问题依旧存在。希望有经验的朋友能帮忙分析下可能的原因和解决方案,谢谢!
2 回复
检查音频/视频文件格式、编码是否支持,文件是否损坏或路径错误。尝试更换文件或重新上传。
在 UniApp 中,{ "errmsg": "mediaerror", "errcode": -99 } 错误通常与媒体文件操作相关,例如音频、视频播放或录制失败。以下是常见原因及解决方法:
常见原因
- 文件路径错误:媒体文件不存在或路径不正确。
- 格式不支持:音频/视频格式不被平台兼容。
- 网络问题:网络资源加载失败(如在线音频/视频)。
- 权限问题:未获取录音或播放权限(如 Android 需要麦克风权限)。
- 系统资源占用:设备正在使用麦克风或扬声器。
解决方法
1. 检查文件路径
- 本地文件需使用绝对路径,例如:
/static/audio.mp3。 - 在线 URL 需确保可访问且无跨域问题。
2. 验证媒体格式
- 音频:支持 MP3、AAC 等常见格式。
- 视频:H.264 编码的 MP4 文件兼容性较好。
- 使用工具转换格式(如 FFmpeg)后重试。
3. 处理网络资源
- 检查在线文件 URL 是否有效:
// 示例:使用 uni.downloadFile 预下载 uni.downloadFile({ url: 'https://example.com/audio.mp3', success: (res) => { if (res.statusCode === 200) { const tempFilePath = res.tempFilePath; // 使用临时路径播放 uni.playVoice({ filePath: tempFilePath }); } } });
4. 配置权限
- Android:在
manifest.json中添加所需权限:"permissions": { "android": { "requestPermissions": ["RECORD_AUDIO", "MODIFY_AUDIO_SETTINGS"] } } - iOS:在
manifest.json的ios节点下配置权限描述。
5. 释放系统资源
- 确保无其他应用占用麦克风/扬声器。
- 播放前停止其他音频:
uni.stopVoice(); // 停止当前播放
6. 错误捕获与重试
- 在媒体 API 的
fail回调中处理错误:uni.playVoice({ filePath: 'audio.mp3', success: () => console.log('播放成功'), fail: (err) => { console.error('播放失败:', err); // 可加入重试逻辑 } });
其他建议
- 使用真机调试(部分问题在模拟器中无法复现)。
- 查看 UniApp 官方文档确认 API 兼容性(如
uni.createInnerAudioContext的用法)。 - 更新 UniApp SDK 和手机系统至最新版本。
通过以上步骤排查,通常可解决大部分 -99 媒体错误问题。如果仍无法解决,请提供具体代码和操作场景以便进一步分析。

