我有一个 ios 应用程序,它通过流媒体播放音乐并使用 mattgallagher AudioStreamer 库它不显示真正的播放时间并且永远不会在 0 秒时停止播放......
有谁知道为什么会这样??
非常感谢!
我有一个 ios 应用程序,它通过流媒体播放音乐并使用 mattgallagher AudioStreamer 库它不显示真正的播放时间并且永远不会在 0 秒时停止播放......
有谁知道为什么会这样??
非常感谢!
我经历过类似的事情。看看AudioStreamer.m中的progress方法
- (double)progress
{
@synchronized(self)
{
if (sampleRate > 0) && ![self isFinishing])
{
if (state != AS_PLAYING && state != AS_PAUSED && state != AS_BUFFERING)
{
return lastProgress;
}
...
}
}
return lastProgress;
}
现在,无法正确显示进度的原因在于两个 if 语句。当您AudioStreamer
快要完成时(可能是在加载所有数据时),它isFinishing
变为 true,这使得它返回缓存的进度值。此外,流媒体状态变为AS_STOPPING
,这使得第二个 if 语句返回lastProgress
. 您真正想要的是在流媒体停止之前更新进度。
我对代码的以下修改做到了这一点,它似乎工作正常。然而,鉴于 AudioStreamer 的一般质量以及它是由 Matt Gallagher 开发的事实,这些 if 语句可能是有原因的。到目前为止,我修改后的代码没有遇到任何崩溃或类似情况,但您应该在您的应用程序中对其进行彻底测试。请注意,一旦流媒体完成,我不再查询进度。如果你这样做,请测试它是否有效:)
- (double)progress
{
@synchronized(self)
{
if (sampleRate > 0))
{
if (state != AS_PLAYING && state != AS_PAUSED && state != AS_BUFFERING && state != AS_STOPPING)
{
return lastProgress;
}
...
}
}
return lastProgress;
}