我们的需求如下,实现复读机的 A-B 循环播放功能(A是起始时间,B是结束时间),并且可以在A-B间循环。
目前的微信API中有AudioContext和InnerAudioContext以及BackgroundAudioManager
目前的实现中和我们需求相关的参数和方法有:
number startTime
开始播放的位置(单位:s),默认为 0
boolean loop
是否循环播放,默认为 false
BackgroundAudioManager.onTimeUpdate(function callback)
监听背景音频播放进度更新事件,只有小程序在前台时会回调。
BackgroundAudioManager.seek(number currentTime)
跳转到指定位置
InnerAudioContext.seek(number position)
跳转到指定位置
按理说可以满足需求,但是我们的需求对于循环的实时性要求很高(0-1毫秒延迟,延迟是指播放到B点后,再次从A点开始播放前的短暂空白声音),所以实际上无法被满足。
现有的方法是底层native的onTimeUpdate播放事件回传至js,然后再由js控制seek,这样的延时太大,所以需要在底层native实现A-B循环的功能,谢谢。
需要加入的参数为:
number endTime
结束播放的位置(单位:s),默认为 声音的实际长度,当播放到endTime时,播放自动停止,如果设置了loop循环,会自动从startTime处开始播放,谢谢。