uni-app 设置volume音量会触发onWaiting() 同时onTimeUpdate音频播放进度重置为0 导致重头开始播放 版本HbuilderX 3.2.15

uni-app 设置volume音量会触发onWaiting() 同时onTimeUpdate音频播放进度重置为0 导致重头开始播放 版本HbuilderX 3.2.15

操作步骤:

  • 设置volume音量 会触发onWaiting() 同时onTimeUpdate音频播放进度会重置为0 导致重头开始播放

预期结果:

  • 设置音量时 不会触发onWaiting() 和onTimeUpdate()不影响歌曲正常播放

实际结果:

  • 设置音量会导致进度条重头开始播放

bug描述:

  • 在Iphone真机调试时 设置volume音量 会触发onWaiting() 同时onTimeUpdate音频播放进度会重置为0 导致重头开始播放 版本HbuilderX 3.2.15

相关链接:

信息类别 信息内容
产品分类 uniapp/App
PC开发环境 Windows
PC开发环境版本 win10
HBuilderX类型 正式
HBuilderX版本 3.2.9
手机系统 iOS
手机系统版本 iOS 15
手机厂商 苹果
手机机型 iphone 8
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

更多关于uni-app 设置volume音量会触发onWaiting() 同时onTimeUpdate音频播放进度重置为0 导致重头开始播放 版本HbuilderX 3.2.15的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

此设备在旧版是否正常? 此版本使用其他设备是否正常? 【bug优先处理规则】https://ask.dcloud.net.cn/article/38139

更多关于uni-app 设置volume音量会触发onWaiting() 同时onTimeUpdate音频播放进度重置为0 导致重头开始播放 版本HbuilderX 3.2.15的实战教程也可以访问 https://www.itying.com/category-93-b0.html


之前是3.2.9,H5没问题,真机有问题,所以升级到了3.2.15 真机调试还是有问题,目前只在H5 和 IOS上进行过测试。

回复 s***@163.com: 请提供简单可复现的完整示例(上传附件),方便我们快速排查问题哦。

回复 DCloud_UNI_Anne: 这是一个简单的示例,调整音量,H5没问题,但是真机调试,播放进度就会重0开始播放。

<template> <view class="test-music"> <button @tap="play">播放</button> <button @tap="pause">暂停</button> <slider :min="0" :max="10" :value="volume" @changing="volumeChange"/> </view> </template> <script> export default{ name:'test-music', data(){ return{ Audio:null, volume:5 } }, methods:{ init(){ const innerAudioContext = uni.createInnerAudioContext(); innerAudioContext.autoplay = true; innerAudioContext.volume = this.volume / 10; innerAudioContext.src = 'https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-hello-uniapp/2cc220e0-c27a-11ea-9dfb-6da8e309e0d8.mp3'; innerAudioContext.onTimeUpdate(()=>{ console.log(innerAudioContext.currentTime) }); innerAudioContext.onWaiting(()=>{ console.log('waiting') }); this.Audio = innerAudioContext; }, volumeChange({detail}){ if(this.Audio){ this.Audio.volume = detail.value/10; } }, play(){ if(this.Audio){ this.Audio.play(); } }, pause(){ if(this.Audio){ this.Audio.pause(); } } }, mounted(){ this.init() } } </script> <style lang="scss" scoped> </style>

已反馈给相关组排查,已加分,感谢您的反馈!

非常感谢,期待尽快修复,同时盼望增加音频数据可视化接口,谢谢

这是一个已知的 iOS 平台特定问题,与底层 WebView 的音频处理机制有关。当在 iOS 设备上动态修改 volume 属性时,系统会重新加载音频资源,从而触发 onWaiting 事件,并重置播放进度。

临时解决方案:

  1. 避免在播放过程中直接修改 volume:可以尝试在修改音量前先暂停音频,修改完成后再继续播放。但需注意,这仍可能导致短暂的播放中断。

    // 示例代码
    this.audioInstance.pause();
    this.audioInstance.volume = newVolume;
    setTimeout(() => {
        this.audioInstance.play();
    }, 50);
回到顶部