UniApp的.getBackgroundAudioManager播放长音频只缓冲一次,缓冲播放完就停了

UniApp的.getBackgroundAudioManager播放长音频只缓冲一次,缓冲播放完就停了

9 回复

播放表现就是播放20分钟就停止播放,报错{errMsg:未知错误,errCode:-99}。


提供一个长音频资源我这边试一下

http://file1.app2006.com/test/audio.mp3 时常 01:01:55 ,大小 113.29MB。 测试了一些音频,发现长没有大重要,如果10MB文件,一下就缓冲完了。 长音频大文件,比如这个到20:1报错{errMsg:未知错误,errCode:-99}。

之前表述是说只缓冲一下,表达不严谨,第一下缓冲一大截,然后缓冲会来一点点,但是远远赶不上播放需求。应该缓冲策略的问题,测试网络服务器网速非常可以的。

回复 1***@qq.com: 好的,我这边先试试

回复 1***@qq.com: 再确认一下,如果不是使用背景音频的API正常吗?

回复 DCloud_Android_zl: 问题我要用这个api,uni的api我不知道,但是浏览器都能正常播放呢

回复 1***@qq.com: 我这边测试发现没问题,在确认一下,播放期间应用有没有退到后台,期间有没有锁屏?

在uni-app中使用getBackgroundAudioManager播放长音频时遇到缓冲问题,可以尝试以下解决方案:

  1. 检查音频链接是否有效,确保服务器支持断点续传(HTTP Range请求)

  2. 监听onWaiting和onCanplay事件:

const bgAudio = uni.getBackgroundAudioManager();
bgAudio.onWaiting(() => {
    console.log('音频缓冲中...');
});
bgAudio.onCanplay(() => {
    console.log('可以播放了');
});
  1. 设置src后立即调用play方法:
bgAudio.src = 'your_audio_url';
bgAudio.title = '音频标题';
bgAudio.play();
  1. 对于H5端,可以尝试设置autoplay属性:
// 仅H5有效
bgAudio.autoplay = true;
  1. 检查网络请求头,确保没有缓存限制:
// 在manifest.json中配置
"networkTimeout": {
    "request": 60000,
    "connectSocket": 60000,
    "uploadFile": 60000,
    "downloadFile": 60000
}
回到顶部