gpt4 book ai didi

objective-c - AudioStreamer 未显示正确的播放时间

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:24:11 24 4
gpt4 key购买 nike

我有一个 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。您真正想要的是在流媒体停止之前更新进度。

我对代码的以下修改就是这样做的,它似乎工作正常。但是,考虑到 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;
}

关于objective-c - AudioStreamer 未显示正确的播放时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7952318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com