我们正在使用StreamingKit(https://github.com/tumtumtum/StreamingKit)从流m4a音频源列表中播放,用户可以在它们之间自由地来回移动。

我们记住每个流中的位置,并在项目开始播放时执行查找(在委托(delegate)方法didStartPlayingQueueItemId中),以返回到该项目在音频中记住的位置。

搜索之后,音频本身会立即移至正确的偏移,但是报告的时间过长,通常大于轨道的长度。

我发现在STKAudioPlayer.m的第1547行,增量有时为负数,这导致播放器在搜索后严重夸大了曲目的进度。

我不确定它如何获得不正确的值,但是出于我们的目的,将这些行包装在if(delta> 0){}子句中可以解决此问题。

当排队的项目最近已更改并且回放正在缓冲时,似乎尤其会发生这种情况。

任何人都知道这里发生了什么,它是否代表在StreamingKit中寻找错误,是我们对如何使用它的误解,还是两者都没有?

最佳答案

我只是遇到了相同的问题,并使用以下方法解决了问题:

https://github.com/tumtumtum/StreamingKit/issues/219

STKAudioPlayer.m更改:

寻找行:

OSSpinLockLock(&currentEntry->spinLock);
currentEntry->seekTime -= delta;
OSSpinLockUnlock(&currentEntry->spinLock);

并将其包含在if语句中以检查delta> 0
if (delta > 0) {
                OSSpinLockLock(&currentEntry->spinLock);
                currentEntry->seekTime -= delta;
                OSSpinLockUnlock(&currentEntry->spinLock);
            }

09-26 19:22