【更新】AudioEngine seek -->pause -->resume 恢复播放时候会播放seek之前的一小段声音。

cocos2dx 3.15.1 (跟COCOS2DX版本没啥关系,3.10以来一直是这样)
AudioEngine setCurrentTime 将正在播放的声音 播放位置设置到新的位置,然后立刻暂停,下一次恢复播放的时候,会播放大概100多毫秒 setCurrentTime之前的声音,貌似seek的时候,并没有清除已经读进去的字节?

这样在应用层面只能先resume 并设置音量为0 , 然后等待200毫秒,再恢复播放声音的音量,这样做的话 前面有时候有一节应该要播放的声音就没法让人听见。

因为我是做的逐字字幕,所以很明显 会有问题。 但是那个声音模块的代码太多了,一时半会看不太明白,还请引擎组的兄弟帮忙看看哦 @panda

我也碰到这个问题。看表像是因为setCurrentTime这个方法是异步方法,调用之后要过一段时间才能生效,所以会播放之前的声音。
加载完成的音乐,1.5MB MP3格式,调用播放接口之后,需要过1-2秒钟才有声音出来,估计也是相同的问题。
无解

哪个平台啊?二位。

native 1.6.1
ios下比android还要慢一些
已经加载好的音效,setCurrentTime和play方法都表现为异步操作,都是有延迟的。
短音效没有这个问题。背景音乐有。
还有一个细节,不加载音效,直接播放,然后停止,音效并不会被真正的停止。原因是因为直接播放音效时,若音效资源没加载会先去加载资源,在资源加载完成之前,调用了stop,资源加载完成之后会照常播放音效。为什么会有这种在加载完成之前就停止的奇怪需求,是因为切换场景时要切换背景音乐,而背景音乐在native下加载和播放的延迟都比较长,玩家手稍微快点就会触发这个问题。

不好意思 忘记写了 是IOS 平台噢

项目遇到类似的问题,和人物动作同步播放的音效,pause再resume音效就和人物动作对应不上了。@dumganhar有没有解决的办法,提供点思路我们自己fix也可以。

对于声音播放精度要求极高的需求,可以使用更专业的第三方音频库,比如 FMOD, superpowered .

这个应该是个BUG
你们测试下就有了。。
直接暂停会 “啪"的电流声, SEEK后 会播放残留的缓存大概几百毫秒的 声音