我有一个通过流媒体播放音乐并使用mattgallagher AudioStreamer库的ios应用程序,它没有显示真正的播放时间,也没有在0秒内停止播放...
有谁知道为什么会这样?
非常感谢!
答案 0 :(得分:5)
我经历过类似的事情。看看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
。你真正想要的是在流光停止之前更新进度。
我对代码的以下修改做到了这一点似乎工作正常。但是,鉴于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;
}
答案 1 :(得分:0)