首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AudioStreamer没有显示正确的播放时间

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

Stack Overflow用户
提问于 2011-10-31 18:17:08
回答 2查看 969关注 0票数 3

我有一个ios应用程序,它通过流媒体和使用mattgallagher AudioStreamer库播放音乐,它不显示实际播放时间,并且永远不会在0秒停止播放……

有人知道为什么会这样吗?

非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2011-10-31 18:58:25

我也经历过类似的事情。查看AudioStreamer.m中的progress方法

代码语言:javascript
复制
- (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语句可能是有原因的。到目前为止,我没有遇到任何崩溃或类似的修改后的代码,但你应该在你的应用程序中彻底测试它。请注意,一旦拖缆完成,我将不再查询进度。如果您这样做了,请测试它是否工作:)

代码语言:javascript
复制
- (double)progress
{
    @synchronized(self)
    {
        if (sampleRate > 0))
        {
            if (state != AS_PLAYING && state != AS_PAUSED && state != AS_BUFFERING && state != AS_STOPPING)
            {
                return lastProgress;
            }
    ...
        }
    }

    return lastProgress;
}
票数 5
EN

Stack Overflow用户

发布于 2014-04-07 19:05:54

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7952318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档