let playParameters: media.PlayParameters = {
loop: -1, // 无限循环
rate: audio.AudioRendererRate.RENDER_RATE_NORMAL, // 正常倍速
leftVolume: 1, // range = 0.0-1.0
rightVolume: 1, // range = 0.0-1.0
priority: 100, // 最低优先级
}
this.soundPool?.play(this.soundID, playParameters, (error: BusinessError, streamId: number) => {
if (error) {
console.error(`Failed to play soundpool: errCode is ${error.code}, errMessage is ${error.message}`)
} else {
//streamID = streamId;
console.info('Succeeded in playing soundpool, streamId:' + streamId);
}
});
每次播放完一遍,会停顿一下,然后再播放,请问如何无缝衔接循环播放?
使用SoundPool目前是没有办法做到无缝循环的 因为pool setLoop做循环是使用的音频池,而且是异步调用中间是有处理的过程需要耗时会有停顿。
如果实现停顿就不能使用SoundPool,可使用AVPlayer做循环播放,详情参考链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-avsession-V5\#setavplaybackstate10