我有一个ios应用程序,它通过流媒体和使用mattgallagher AudioStreamer库播放音乐,它不显示实际播放时间,并且永远不会在0秒停止播放……
有人知道为什么会这样吗?
非常感谢!
发布于 2011-10-31 18:58:25
我也经历过类似的事情。查看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-语句。当您的进度接近完成时(可能是当所有数据都加载完毕时),它的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;
}发布于 2014-04-07 19:05:54
https://stackoverflow.com/questions/7952318
复制相似问题