AudioStreamer没有显示正确的播放时间

Jov*_*vem 3 objective-c audiostreamer ios

我已经通过流媒体和使用mattgallagher AudioStreamer库它不会显示真实的播放时间,并在0秒永不停止播放播放音乐一个iOS应用程序...

有谁知道为什么会这样?

非常感谢!

Phl*_*bbo 5

我经历过类似的事情.看看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;
}
Run Code Online (Sandbox Code Playgroud)

现在,未正确显示进度的原因在于两个if语句.当你AudioStreamer几乎完成时(可能是在加载了所有数据的时候),它就isFinishing变为了,这使得它返回缓存的进度值.此外,流转化状态变为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;
}
Run Code Online (Sandbox Code Playgroud)