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播放长音频时遇到缓冲问题,可以尝试以下解决方案:
-
检查音频链接是否有效,确保服务器支持断点续传(HTTP Range请求)
-
监听onWaiting和onCanplay事件:
const bgAudio = uni.getBackgroundAudioManager();
bgAudio.onWaiting(() => {
console.log('音频缓冲中...');
});
bgAudio.onCanplay(() => {
console.log('可以播放了');
});
- 设置src后立即调用play方法:
bgAudio.src = 'your_audio_url';
bgAudio.title = '音频标题';
bgAudio.play();
- 对于H5端,可以尝试设置autoplay属性:
// 仅H5有效
bgAudio.autoplay = true;
- 检查网络请求头,确保没有缓存限制:
// 在manifest.json中配置
"networkTimeout": {
"request": 60000,
"connectSocket": 60000,
"uploadFile": 60000,
"downloadFile": 60000
}