0


我想做一些像节拍切片这样的事情。

我可以设置一个计时器来定期获取 AudioQueueLevelMeterState。

但是,似乎没有办法将查询 AudioQueueLevelMeterState 的时间与 AudioQueueBuffer 的内容联系起来?

例如,假设我的缓冲区是 1 秒长。我运行一个计时器,每秒查询仪表状态 60 次。在 0.5 秒时,我达到了我想要的水平。因此,我想从我获得关卡的那一刻开始,即剩余的 0.5 秒,获取该音频缓冲区的一部分。

有任何想法吗?可以这么说,有什么方法可以在缓冲区中完成这一切吗?

非常感谢任何建议。

非常感谢,xj

4

2 回答 2

1

终于把这个整理好了。我放弃了 AudioQueue 作为录制音频的一种方式,而是选择了 AudioUnit。AudioQueue 太难了,最终我不得不认真地质疑它是否是用于我想做的事情的正确 API。在一些论坛上,人们说 AudioUnit 很难使用,但老实说,在我使用 AudioQueue 之后,AudioUnit 非常简单。

无论如何,回答我自己的问题。最终我不得不解决计量和记录的同步问题,所以我放弃了定时器机制来采样电平。我仍然使用 AudioQueue,但仅用于计量。在录音回调中,我kAudioQueueProperty_CurrentLevelMeter从 AudioQueue 中获取。录制回调接收帧计数,这样我就可以完美地将帧位置与仪表样本同步。

于 2011-05-31T13:44:40.140 回答
0

查看 Apples Speak Here 示例项目。他们有类似的设置,你也许可以破解。

于 2011-04-08T07:27:56.047 回答