uni-app createInnerAudioContext 安卓端播放oss上音频地址报错

发布于 1周前 作者 phonegap100 来自 Uni-App

uni-app createInnerAudioContext 安卓端播放oss上音频地址报错

开发环境 版本号 项目创建方式
Windows Windows10_19042 HBuilderX

示例代码:

const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
innerAudioContext.src = 'https://cos.ap-shanghai.myqcloud.com/defb-shanghai-030-privatev2-02-1256635546/501f-1400665836/5957-BjeN13g8RQ/59a49e1d43a2675744a01624ee5eceaf.mp3?sign=q-sign-algorithm%3Dsha1%26q-ak%3DAKIDd5HFyQbWAXdS0HGzRcV7TYMuBBuLWP1M%26q-sign-time%3D1653977197%3B1656569197%26q-key-time%3D1653977197%3B1656569197%26q-header-list%3Dhost%26q-url-param-list%3D%26q-signature%3D434bdb10aa22ac8d050c958b11dba665422510e7&im-time-expired=1656569197';
innerAudioContext.onPlay(() => {
console.log('开始播放');
});
innerAudioContext.onError((res) => {
console.log(res);
});

操作步骤:

const innerAudioContext = uni.createInnerAudioContext();  
innerAudioContext.autoplay = true;  
innerAudioContext.src = 'https://cos.ap-shanghai.myqcloud.com/defb-shanghai-030-privatev2-02-1256635546/501f-1400665836/5957-BjeN13g8RQ/59a49e1d43a2675744a01624ee5eceaf.mp3?sign=q-sign-algorithm%3Dsha1%26q-ak%3DAKIDd5HFyQbWAXdS0HGzRcV7TYMuBBuLWP1M%26q-sign-time%3D1653977197%3B1656569197%26q-key-time%3D1653977197%3B1656569197%26q-header-list%3Dhost%26q-url-param-list%3D%26q-signature%3D434bdb10aa22ac8d050c958b11dba665422510e7&im-time-expired=1656569197';  
innerAudioContext.onPlay(() => {  
  console.log('开始播放');  
});  
innerAudioContext.onError((res) => {  
  console.log(res);  
});  

预期结果:

可以正常 类似 https://cos.ap-shanghai.myqcloud.com/defb-shanghai-030-privatev2-02-1256635546/501f-1400665836/5957-BjeN13g8RQ/59a49e1d43a2675744a01624ee5eceaf.mp3?sign=q-sign-algorithm%3Dsha1%26q-ak%3DAKIDd5HFyQbWAXdS0HGzRcV7TYMuBBuLWP1M%26q-sign-time%3D1653977197%3B1656569197%26q-key-time%3D1653977197%3B1656569197%26q-header-list%3Dhost%26q-url-param-list%3D%26q-signature%3D434bdb10aa22ac8d050c958b11dba665422510e7&im-time-expired=1656569197 地址的网络音频文件

实际结果:

在安卓机上 播放oss上的视频地址 播放错误 返回 {“errMsg”:“MediaError”,“errCode”:-99}

bug描述:

在安卓机上 播放oss上的视频地址 播放错误 返回 {“errMsg”:“MediaError”,“errCode”:-99}


6 回复

oss地址会过期 过期之后无法访问 我在测试的时候 oss地址是没有过期的 这个问题只在android上出现 ios正常


我也遇到这样的问题,开始的时候使用的是STS授权,结果地址很长很长,播放的时候,全部是-99。后来不使用STS了,地址改成这样短的 https://rrr-oss.oss-cn-hangzhou.aliyuncs.com/audio/20230528/Et2Q2NdHiBZEt8t5bQpS.mp3?response-content-disposition=inline&OSSAccessKeyId=LTAI5tCP8hCZsEWQNT23QKQn&Expires=1685880334&Signature=Mzab%2Fe7EaVwe3ONQPWEpHYk%2Bnfc%3D 结果是,一般都都可以播放,偶尔无法播放。或者说一个播放列表,随机的无法播放,同一个音频一会儿能播放,一会儿不能,都在时间限制内。 这样的问题只在安卓10上出现,浏览器上长短地址都可以正常播放,不会出现任何问题。

一样的问题,一年啦现在还有呢

通过先下载再播放解决了

在使用 uni-appcreateInnerAudioContext 播放 OSS(阿里云对象存储)上的音频文件时,安卓端可能会遇到一些问题,导致无法正常播放音频。以下是一些可能的原因和解决方法:

1. 音频格式问题

  • 原因: 某些安卓设备可能不支持特定的音频格式,例如 .mp3 文件在某些设备上可能无法正常播放。
  • 解决方法: 确保音频文件的格式是安卓设备广泛支持的格式,如 .mp3.wav。你可以尝试将音频文件转换为其他格式后再测试。

2. 音频文件编码问题

  • 原因: 音频文件的编码方式可能不被安卓设备支持。
  • 解决方法: 尝试重新编码音频文件,使用标准的编码参数。你可以使用工具如 FFmpeg 来重新编码音频文件。

3. 跨域问题

  • 原因: 如果你的音频文件托管在 OSS 上,可能会遇到跨域问题,导致音频无法加载。
  • 解决方法: 确保 OSS 的跨域设置正确。你可以在 OSS 的管理控制台中配置跨域规则,允许你的域名访问音频文件。

4. 网络问题

  • 原因: 网络不稳定或音频文件过大,导致加载失败。
  • 解决方法: 确保网络连接稳定,并尝试压缩音频文件以减小文件大小。

5. 音频地址问题

  • 原因: 音频地址可能不正确或无法访问。
  • 解决方法: 检查音频地址是否正确,并确保音频文件可以通过浏览器直接访问。

6. 权限问题

  • 原因: 安卓设备可能缺少必要的权限来播放网络音频。

  • 解决方法: 在 manifest.json 中确保已添加必要的权限,如网络访问权限:

    "permission": {
      "scope.userLocation": {
        "desc": "你的位置信息将用于小程序位置接口的效果展示"
      }
    }

7. uni-app 版本问题

  • 原因: 你使用的 uni-app 版本可能存在已知的 bug。
  • 解决方法: 确保你使用的是最新版本的 uni-app,或者尝试降级到已知稳定的版本。

8. 调试和日志

  • 原因: 没有足够的调试信息来定位问题。
  • 解决方法: 在代码中添加更多的日志输出,检查 onError 回调中的错误信息,以便更好地定位问题。

示例代码

const innerAudioContext = uni.createInnerAudioContext();

innerAudioContext.src = 'https://your-oss-bucket.aliyuncs.com/audio.mp3';

innerAudioContext.onPlay(() => {
  console.log('开始播放');
});

innerAudioContext.onError((err) => {
  console.error('播放错误:', err);
});

innerAudioContext.play();
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!