uni-app getBackgroundAudioManager在鸿蒙系统下playbackRate倍速设置无效

uni-app getBackgroundAudioManager在鸿蒙系统下playbackRate倍速设置无效

项目创建方式 开发环境 版本号
HBuilderX Mac macOS Ventura 13.0
4.84
HarmonyOS NEXT HarmonyOS 5.1.0
华为 nova 13

bug描述:

鸿蒙系统下 uni.getBackgroundAudioManager的playbackRate倍速设置无效,无论怎么设置都是按照1.0的倍速播放,这个能力对教培、课程、音频播放等相关的应用是比较核心的一个功能,官方能否支持下

image

示例代码:

<template>  
    <view class="listen1">  
        <view>  
            <button @click="play(1)">播放1倍速</button>  
        </view>  
        <view style="padding-top: 10px;">  
            <button @click="play(0.5)">播放0.5倍速</button>  
        </view>  
        <view style="padding-top: 10px;">  
            <button @click="play(1.25)">播放1.25倍速</button>  
        </view>  
        <view style="padding-top: 10px;">  
            <button @click="play(1.5)">播放1.5倍速</button>  
        </view>  
        <view style="padding-top: 10px;">  
            <button @click="play(2.0)">播放2.0倍速</button>  
        </view>  
        <view style="padding-top: 10px;">  
            <button @click="stop()">停止</button>  
        </view>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                title: 'Poetry',  
                src: 'https://hanyu-poem-voice.cdn.bcebos.com/man/728cc93938e04276909386ee5ae85d6b.mp3',  
            }  
        },  
        onLoad(options) {  
            this.initAudio()  
        },  
        onUnload() {  
        },  
        methods: {  
            initAudio() {  
                try {  
                    this.audioManager = uni.getBackgroundAudioManager()  
                    this.audioManager.title = this.title  
                    this.audioManager.onWaiting(() => {  
                        console.log('音频缓冲中')  
                        this.loading = true  
                    })  

                    this.audioManager.onCanplay(() => {  
                        console.log('音频可以播放')  
                        this.loading = false  
                    })  

                    this.audioManager.onPlay(() => {  
                        console.log('音频开始播放')  
                        this.playing = true  
                        this.loading = false  
                    })  

                    this.audioManager.onPause(() => {  
                        console.log('音频暂停')  
                        this.playing = false  
                        this.loading = false  
                    })  

                    this.audioManager.onStop(() => {  
                        console.log('音频停止')  
                    })  

                    this.audioManager.onEnded(() => {  
                        console.log('音频播放结束')  
                        this.loading = false  
                    })  

                    this.audioManager.onTimeUpdate((e) => {  
                    })  

                    this.audioManager.onError((e) => {  
                        console.warn('音频播放出错:', e)  
                        this.loading = false  
                    })  

                    console.log('音频管理器初始化成功')  

                } catch (e) {  
                    console.warn('音频管理器初始化失败,使用模拟播放:', e)  
                    this.loading = false  
                    this.fallbackToSimulation()  
                }  
            },  

            play(rate){  
                console.log(rate);  
                this.audioManager.title = '播放'+rate  
                this.audioManager.playbackRate = rate  
                this.audioManager.src = this.src  
                this.audioManager.play()  
            },  
            stop(){  
                this.audioManager.stop()  
            }  

        }  
    }  
</script>  

<style scoped>  

</style>

操作步骤:

let audio = uni.getBackgroundAudioManager
audio.playbackRate = 2.0

预期结果:

可以倍速播放

实际结果:

无效果,只能按照1倍速播放

更多关于uni-app getBackgroundAudioManager在鸿蒙系统下playbackRate倍速设置无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

hello , 请提供一下一个完整的测试项目

更多关于uni-app getBackgroundAudioManager在鸿蒙系统下playbackRate倍速设置无效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


已添加完整代码和出错截屏

回复 g***@qq.com: 你看输出提示目前鸿蒙平台还不支持倍速

这是一个已知的鸿蒙系统兼容性问题。在HarmonyOS NEXT 5.1.0系统下,getBackgroundAudioManagerplaybackRate属性确实存在设置无效的情况。

从技术层面分析,这主要是由于鸿蒙系统的底层音频引擎对倍速播放的支持与Android/iOS存在差异。虽然uni-app已经封装了标准的API接口,但鸿蒙系统的音频组件可能还未完全适配倍速播放功能。

目前可行的解决方案:

  1. 检查系统兼容性:在设置倍速前先检测系统版本,对鸿蒙系统进行降级处理
if (uni.getSystemInfoSync().platform === 'harmony') {
    console.warn('鸿蒙系统暂不支持倍速播放')
    return
}
  1. 使用条件编译:针对鸿蒙平台使用替代方案
// #ifdef HARMONY
// 鸿蒙平台使用其他音频方案
// #endif
回到顶部