首页 文章

iOS StreamingKit 'seek'命令会导致音频流报告错误的进度值

提问于
浏览
2

我们正在使用StreamingKit(https://github.com/tumtumtum/StreamingKit)播放流式m4a音频源列表,用户可以在这些音频源之间来回移动 .

我们记住每个流中的位置,并且当项目开始播放时(在委托方法didStartPlayingQueueItemId中)执行搜索,以返回该项目的音频中的记忆点 .

在搜索之后,音频本身立即移动到正确的偏移,但报告的时间太大,通常大于轨道的长度 .

我发现在STKAudioPlayer.m的第1547行,delta有时是负数,这导致玩家在搜索后严重过度报道了赛道的进度 .

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

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

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

1 回答

  • 0

    我刚遇到同样的问题并使用以下方法修复它:

    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);
                }
    

相关问题