我有一个ios应用程序播放音乐的流媒体和使用mattgallagher AudioStreamer库它不显示真正的播放时间,永远不会停止播放在0秒…
有谁知道为什么会这样吗?
非常感谢!
我也经历过类似的事情。看看AudioStreamer.m
中的进度方法- (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
。你真正想要的是更新进度直到streamer停止。
我下面对代码的修改做到了这一点,它似乎工作得很好。然而,考虑到AudioStreamer的总体质量以及它是由Matt Gallagher开发的事实,这些if语句可能是有原因的。到目前为止,我没有遇到任何崩溃或类似的修改代码,但你应该在你的应用程序中彻底测试它。注意,一旦streamer完成,我就不再查询进度了。如果你这样做,测试它是否工作:)
- (double)progress
{
@synchronized(self)
{
if (sampleRate > 0))
{
if (state != AS_PLAYING && state != AS_PAUSED && state != AS_BUFFERING && state != AS_STOPPING)
{
return lastProgress;
}
...
}
}
return lastProgress;
}
问题已解决:
https://github.com/mattgallagher/AudioStreamer/issues/39