音频流处理器未显示正确的播放时间



我有一个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

相关内容

  • 没有找到相关文章

最新更新