uni-app IOS手机无法播放aac音频文件报错

uni-app IOS手机无法播放aac音频文件报错

错误信息

  • iOS手机播放.aac文件报错
    • App上报:
      {
        "errMsg": "MediaError",
        "errCode": -5
      }
      
    • 微信小程序上报:
      {
        "errMsg": "INNERRCODE:-11800,ERRMSG:这项操作无法完成",
        "errCode": 10001
      }
      

播放方式

通过uni.createInnerAudioContext()实现


更多关于uni-app IOS手机无法播放aac音频文件报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

10 回复

iOS设备播放.aac文件报错主要有两个原因:

iOS系统限制:App报错errCode:-5通常与后台音频权限有关。需在manifest.json中app-plus -> distribute -> ios节点添加"UIBackgroundModes":[“audio”]配置,否则iOS会阻止后台音频播放。

微信小程序兼容性:errCode:10001(系统错误)表明格式支持问题。虽然文档显示aac在iOS支持,但微信小程序对音频格式有严格限制。建议:

使用uni.createInnerAudioContext()替代audio组件
检查基础库版本是否≥1.9.0
开启"上传代码时自动压缩脚本文件"(开发时需注意)

解决方案:

转换音频格式为mp3/m4a更稳妥
添加详细错误监听: const audio = uni.createInnerAudioContext();
audio.onError((err) => {
console.log(‘播放错误:’, err.errCode, err.errMsg);
}); 检查manifest配置及音频文件完整性

参考文档: 音频API兼容性 微信小程序开发注意事项 内容为 AI 生成,仅供参考

更多关于uni-app IOS手机无法播放aac音频文件报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


微信端,你使用 wx. createInnerAudioContext 来测试一下,也就是使用原生 api 进行测试。也检查微信小程序平台的反馈,先排除音频问题

微信小程序我建了个代码片段报错和上边一样,开发工具模拟卡可以播放,真机就不行

回复 银狼: 你换一台机器再试试,这个是调用的系统能力,有可能就是不支持了,你也可以试试其他的音频,有可能参数不匹配、参数特殊也会导致播放失败

回复 DCloud_UNI_OttoJi: 其他音频IOS系统可以,.aac格式的文件纯血鸿蒙系统和安卓系统都OK,只有IOS系统不行不管是微信小程序还是APP。

回复 银狼: 提供一个音频文件

回复 银狼: 我测试好像的确不行,你可以参考这个 https://developers.weixin.qq.com/community/develop/doc/0006e846614d60e04569b70a854400 这个需要给小程序社区反馈。

回复 DCloud_UNI_OttoJi: 小程序的问题我已经在小程序社区反馈过了,app也有这个问题。

针对iOS设备无法播放AAC音频的问题,这通常与iOS系统对音频编码格式的严格兼容性要求有关。以下是关键排查点:

  1. 音频编码规范
    iOS仅支持标准AAC-LC编码,需确认音频是否采用ADTS或ADIF封装。建议使用专业工具(如FFmpeg)检查编码格式:

    ffmpeg -i yourfile.aac
    

    若显示Stream #0:0: Audio: aac (LC)即为兼容格式。

  2. 音频采样率限制
    iOS对非标准采样率(如22050Hz)支持较差,建议统一转换为44100Hz标准采样率:

    ffmpeg -i input.aac -ar 44100 -ac 2 output.aac
    
  3. 文件头信息修复
    部分AAC文件头损坏会导致iOS解码失败,可尝试重建文件头:

    ffmpeg -i input.aac -c:a copy -bsf:a aac_adtstoasc output.aac
    
  4. 代码层兼容处理
    uni.createInnerAudioContext()播放前增加格式检测:

    const audio = uni.createInnerAudioContext()
    audio.onError((res) => {
      console.log('音频播放失败:', res.errCode)
      // 可在此处触发备用音频加载
    })
    
  5. 服务器配置检查
    确保服务器返回正确的MIME类型:

    Content-Type: audio/aac
    // 或
    Content-Type: audio/mpeg
回到顶部