uni-app createInnerAudioContext 创建两个实例一个背景音乐一个插播 播放时会把背景音乐关闭 有大佬知道为什么吗?
uni-app createInnerAudioContext 创建两个实例一个背景音乐一个插播 播放时会把背景音乐关闭 有大佬知道为什么吗?
测试过的手机
苹果,三星
操作步骤
- 一直播放背景,插播播报,背景音乐被暂停了
预期结果
- 背景音乐长时间播放,插播播报,背景音乐不会被关闭
实际结果
- 传播播报,背景音乐自动关闭播报了
bug描述
createInnerAudioContext 创建两个一个背景音乐一个插播 播放会把背景音乐给关闭了,有大佬知道为什么吗?
- 刚开始都可以正常播放,过了一会播放另外一个插播音频就把背景音乐给暂停了
- 使用了:sessionCategory = ‘ambient’ 无效
| 信息类别 | 内容 |
|----------------|------------------------------------|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC开发环境版本 | [@10](/user/10).0.19044 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 4.15 |
| 手机系统 | 全部 |
| 手机厂商 | 苹果 |
| 页面类型 | nvue |
| vue版本 | vue2 |
| 打包方式 | 离线 |
| 项目创建方式 | HBuilderX |
更多关于uni-app createInnerAudioContext 创建两个实例一个背景音乐一个插播 播放时会把背景音乐关闭 有大佬知道为什么吗?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
sessionCategory字段设置不起
更多关于uni-app createInnerAudioContext 创建两个实例一个背景音乐一个插播 播放时会把背景音乐关闭 有大佬知道为什么吗?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 中,使用 createInnerAudioContext 创建多个音频实例时,默认情况下,这些音频实例是相互独立的,它们不会直接相互影响。然而,如果你在播放一个音频时,另一个音频停止了,可能是因为以下几种原因:
-
系统资源限制:
- 在某些设备或浏览器中,系统可能会限制同时播放的音频资源。如果设备或浏览器不支持同时播放多个音频流,系统可能会自动停止其他音频的播放。
-
音频实例的交互:
- 虽然
createInnerAudioContext创建的音频实例是独立的,但在某些情况下,音频实例可能会相互影响。例如,如果你在播放一个音频时,另一个音频的播放事件(如onPlay)触发了某些逻辑,导致背景音乐被停止。
- 虽然
-
代码逻辑问题:
- 检查你的代码,确保没有在播放插播音频时手动停止背景音乐。例如,可能在插播音频的
onPlay事件中调用了背景音乐的stop方法。
- 检查你的代码,确保没有在播放插播音频时手动停止背景音乐。例如,可能在插播音频的
-
浏览器或平台的限制:
- 不同的浏览器或平台可能有不同的音频处理策略。某些平台可能不允许同时播放多个音频,或者在某些情况下会自动暂停其他音频。
解决方案
-
检查代码逻辑:
- 确保在播放插播音频时,没有手动停止背景音乐。
-
使用
autoplay和loop:- 如果背景音乐是循环播放的,可以设置
autoplay和loop属性,确保背景音乐在插播音频结束后自动恢复播放。
const bgMusic = uni.createInnerAudioContext(); bgMusic.src = 'background_music.mp3'; bgMusic.autoplay = true; bgMusic.loop = true; const interruption = uni.createInnerAudioContext(); interruption.src = 'interruption.mp3'; interruption.autoplay = false; // 播放插播音频 interruption.play(); // 监听插播音频的结束事件,恢复背景音乐 interruption.onEnded(() => { bgMusic.play(); }); - 如果背景音乐是循环播放的,可以设置
-
使用
onPause和onPlay事件:- 监听插播音频的
onPlay和onPause事件,确保背景音乐在适当的时候暂停和恢复。
const bgMusic = uni.createInnerAudioContext(); bgMusic.src = 'background_music.mp3'; bgMusic.autoplay = true; bgMusic.loop = true; const interruption = uni.createInnerAudioContext(); interruption.src = 'interruption.mp3'; interruption.autoplay = false; interruption.onPlay(() => { bgMusic.pause(); }); interruption.onPause(() => { bgMusic.play(); }); interruption.onEnded(() => { bgMusic.play(); }); // 播放插播音频 interruption.play(); - 监听插播音频的

