uni-app uni.getBackgroundAudioManager()提前结束onEnded()

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

uni-app uni.getBackgroundAudioManager()提前结束onEnded()

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

操作步骤:

请不要拉进度条,一直正常播放完歌曲!
该歌曲时常为4:55,但是多次尝试后发现在3:28左右就会执行onEnded()而结束播放
有的flac歌曲可以正常完整播放完毕,有的也会像这样中途就结束

预期结果:

播放完完整歌曲结束

实际结果:

播放仅3:28就结束了

bug描述:

uni.getBackgroundAudioManager()在播放部分flac音乐时,会出现提前onEnded()操作,例如:http://qt.music.canace.cn/zjsa.flac
在其他播放平台可以正常完整播放完该歌曲,在uni.getBackgroundAudioManager()会出现提前结束现象
通过测试,发现缓冲点没有继续缓冲后面的,所以导致直接onEnded(),但是网络一切正常,不知道为啥不会继续缓冲后续


1 回复

在使用 uni.getBackgroundAudioManager() 进行音频播放时,onEnded 事件会在音频正常播放结束时触发。如果你发现 onEnded 事件提前触发,可能是因为音频播放过程中遇到了某些问题,或者音频本身的数据存在问题。

以下是一些可能导致 onEnded 提前触发的常见原因及解决方法:

1. 音频数据不完整或损坏

  • 原因: 如果音频文件在加载或播放过程中出现数据损坏或不完整,可能会导致播放器提前结束播放。
  • 解决方法: 确保音频文件的完整性和正确性。可以尝试重新下载或使用其他音频文件进行测试。

2. 网络问题

  • 原因: 如果音频文件是通过网络加载的,网络不稳定或中断可能会导致播放器提前结束播放。
  • 解决方法: 检查网络连接,确保音频文件能够正常加载。如果是网络问题,可以考虑使用本地音频文件进行测试。

3. 音频格式不支持

  • 原因: 如果音频格式不被 BackgroundAudioManager 支持,可能会导致播放器提前结束播放。
  • 解决方法: 确保音频格式是 BackgroundAudioManager 支持的格式(如 MP3、AAC 等)。可以尝试将音频转换为支持的格式。

4. 播放器内部错误

  • 原因: BackgroundAudioManager 内部可能发生了一些未知的错误,导致播放器提前结束播放。
  • 解决方法: 可以尝试重新初始化 BackgroundAudioManager 或者重启应用。如果问题依然存在,可以考虑更新 uni-app 版本或反馈给官方团队。

5. 代码逻辑问题

  • 原因: 代码中可能存在某些逻辑错误,导致 onEnded 事件被错误地触发。
  • 解决方法: 检查代码逻辑,确保没有在播放过程中手动调用 stopseek 等方法,这些操作可能会导致 onEnded 事件被触发。

6. 平台差异

  • 原因: 不同平台(如 iOS 和 Android)对 BackgroundAudioManager 的实现可能存在差异,导致 onEnded 事件的行为不一致。
  • 解决方法: 检查不同平台上的表现,确保代码在各个平台上都能正常工作。如果有平台差异,可以考虑针对不同平台进行适配。

示例代码

以下是一个使用 uni.getBackgroundAudioManager() 的简单示例:

const backgroundAudioManager = uni.getBackgroundAudioManager();

backgroundAudioManager.title = '音频标题';
backgroundAudioManager.epname = '专辑名称';
backgroundAudioManager.singer = '歌手';
backgroundAudioManager.coverImgUrl = '封面图片URL';
backgroundAudioManager.src = '音频文件URL';

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

backgroundAudioManager.onPause(() => {
  console.log('音频暂停');
});

backgroundAudioManager.onEnded(() => {
  console.log('音频播放结束');
});

backgroundAudioManager.onError((err) => {
  console.error('音频播放错误', err);
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!