AudioQueue 修剪和缓冲区大小

Posted

技术标签:

【中文标题】AudioQueue 修剪和缓冲区大小【英文标题】:AudioQueue trimming and buffer size 【发布时间】:2012-05-12 08:59:21 【问题描述】:

尽管应用程序按预期工作,但我在控制台中收到一条消息,我想更详细地了解它。

设置如下。创建一个 AVAudioPlayer 并加载一个 .m4a 文件(长度为 03:22,大小为 618 KB)。该文件的比特率为 23 kbps。我意识到比特率非常低,但这对于应用程序来说是可以接受的。

每当我调整音频播放器的 currentTime 属性时,我都会收到以下消息记录到控制台。

AudioQueue:请求从缓冲区修剪 2112 + 0 = 2112 帧 包含 1024 帧

设置 currentTime 属性的结果符合预期,但我想知道这条消息的确切含义以及我能做些什么来防止它出现。

【问题讨论】:

我也得到了这个,很想知道原因。你发现了吗? 很遗憾,我没有找到答案,甚至没有找到这个问题的答案。 【参考方案1】:

为我工作:在设置其 currentTime 属性之前停止播放器。然后设置 currentTime,prepareToPlay 并播放。

[avAudioPlayer stop];
[avAudioPlayer setCurrentTime:newCurrentTime];
[avAudioPlayer prepareToPlay];
[avAudioPlayer play];

来源:http://eureka.ykyuen.info/2010/06/10/iphone-add-an-uislider-for-avaudioplayer/

【讨论】:

[player stop] 修复了这个错误,如果你之后没有设置当前时间。非常感谢!

以上是关于AudioQueue 修剪和缓冲区大小的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中使用原始数据播放音频?

iOS音频播放之AudioQueue:播放本地音乐

如何访问 AudioQueue 缓冲区中的数据?

AudioQueue 如何从 CallBack 读取缓冲区

AVCaptureSession 和 AudioQueue

使用 AudioQueue 读取音频缓冲区数据