我们正在使用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(¤tEntry->spinLock);
currentEntry->seekTime -= delta;
OSSpinLockUnlock(¤tEntry->spinLock);
并将其包含在if语句中以检查delta> 0
if (delta > 0) {
OSSpinLockLock(¤tEntry->spinLock);
currentEntry->seekTime -= delta;
OSSpinLockUnlock(¤tEntry->spinLock);
}