uni-app uni.createInnerAudioContext() 播放特定网络链接的音频播放失败,这个链接的音频文件下载下来播放是正常的
uni-app uni.createInnerAudioContext() 播放特定网络链接的音频播放失败,这个链接的音频文件下载下来播放是正常的
| 类别 | 信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Mac |
| PC操作系统版本 | Apple M2;MacOS 14.5 (23F79) |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 4.66 |
| 手机系统 | Android |
| 手机系统版本 | Android 13 |
| 手机厂商 | 一加/小米 |
| 手机机型 | 安卓手机 |
| 页面类型 | vue |
| vue版本 | vue3 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
示例代码:
this.audioContext = uni.createInnerAudioContext(); // 创建音频上下文
this.audioContext.onCanplay(() => {
console.log('-----可以播放音频-----');
})
this.audioContext.onError((err) => {
console.error('音频播放失败', err);
console.log('音频路径',this.audioContext.src)
toast('音频播放失败');
if (this.onFinish) this.onFinish(); // 发生错误时调用回调
});
// 播放指定索引的音频
private playAudioAtIndex(index: number) {
if (index < 0 || index >= this.audioList.length) return;
this.audioContext.stop(); // 停止当前音频
this.audioContext.src = this.audioList[index]; // 设置音频文件路径
this.audioContext.volume = this.volume; // 设置音量
this.audioContext.play(); // 开始播放
}
操作步骤:
- createInnerAudioContext 播放网络路径:
https://XXXX.aliyuncs.com/audio/202507/20250701150516686388ac6227a.mp3?Expires=1751612716&OSSAccessKeyId=LTAI5tFRY33oR23Tatejksdx&Signature=nGvxvuAyheTXoazsdla%2Bh4BPQ4Y%3D
- 报错{“errMsg”:“MediaError”,“errCode”:-99}
预期结果:
- 能正常播放
实际结果:
- 报错{“errMsg”:“MediaError”,“errCode”:-99},无法播放
bug描述:
- 使用uni.createInnerAudioContext()播放网络mp3
- 报错:{“errMsg”:“MediaError”,“errCode”:-99}
- 这个链接的mp3文件放到其他网络路径下是ok的
- 报错的网络路径类似如下:
https://XXXX.aliyuncs.com/audio/202507/20250701150516686388ac6227a.mp3?Expires=1751612716&OSSAccessKeyId=LTAI5tFRY33oR23Tatejksdx&Signature=nGvxvuAyheTXoazsdla%2Bh4BPQ4Y%3D
- 有疑问:是不是createInnerAudioContext 播放的时候对这个路径处理异常导致无法播放???
更多关于uni-app uni.createInnerAudioContext() 播放特定网络链接的音频播放失败,这个链接的音频文件下载下来播放是正常的的实战教程也可以访问 https://www.itying.com/category-93-b0.html
hello,可以私信我发一下你这个文件链接吗?我测试一下
更多关于uni-app uni.createInnerAudioContext() 播放特定网络链接的音频播放失败,这个链接的音频文件下载下来播放是正常的的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个网络路径的链接使用createInnerAudioContext播放在h5正常,在app才会报错:{“errMsg”:“MediaError”,“errCode”:-99}
回复 菜菜2: 下载到本地之后播放呢?
回复 DCloud_UNI_yuhe: 目前没去测试这种,后端暂时改了链接了
从你的描述和错误代码来看,这是一个典型的音频源URL格式问题。errCode: -99 通常表示音频源无法加载或格式不支持。
主要问题在于你的音频URL包含了URL特殊字符和查询参数:
https://XXXX.aliyuncs.com/audio/202507/20250701150516686388ac6227a.mp3?Expires=1751612716&OSSAccessKeyId=LTAI5tFRY33oR23Tatejksdx&Signature=nGvxvuAyheTXoazsdla%2Bh4BPQ4Y%3D
URL中的%2B(加号编码)和%3D(等号编码)等特殊字符在createInnerAudioContext处理时可能出现解析异常。
解决方案:
- URL编码处理 在设置src前对URL进行完整编码:
this.audioContext.src = encodeURI(this.audioList[index]);
- 分离参数方式 如果可能,建议将音频文件路径与参数分离,使用纯净的MP3 URL:
// 提取纯净的音频路径,去除签名参数
const cleanUrl = this.audioList[index].split('?')[0];
this.audioContext.src = cleanUrl;


