在iOS上更改AUGraph的采样率

时间:2011-12-28 16:18:36

标签: ios core-audio audiounit

我已经实现了类似于iOS Developer's Library上的AUGraph。但是,在我的应用程序中,我需要能够以不同的采样率(可能是两个不同的采样率)播放声音。

我一直在浏览Apple的文档,但没有找到在运行时设置采样率的方法。我一直在考虑三种可能的解决方法:

  1. 每次需要更改采样率时重新初始化AUGraph;
  2. 为每个不同的采样率初始化不同的AUGraph;
  3. 在播放前转换每个声音的采样率;
  4. 这些方法在处理器上看起来都很笨重。

    在运行时更改AUGraph的采样率的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

对于连续音频流方案,

通常为#1。

使用您列出的其他方法,您的计划可能有特殊需要或好处:

  • #2:您需要处理重新初始化不是问题的地方。
  • #3:您需要同时混合和处理两个具有不同输入采样率的流,特别是如果您发现自己多次SRCing信号。

但是,如果您只需要使用SRC播放并且不考虑最低延迟,则可能需要尝试使用AudioQueue。

答案 1 :(得分:0)

我很确定它无法在运行时完成。解决方案#2是你最好的选择,以及#3。对于采样率转换,libsndfile可能可以根据您的需要进行调整。

答案 2 :(得分:0)

如果您不希望延迟拆除和重建音频图表,则可能需要重新采样声音数据(除了一个采样率之外的所有采样率)。

您可以在开始播放声音数据之前对其进行重新取样,或者将实时重新取样器作为音频图形的一部分运行。许多iOS音乐应用程序将后者作为内置基于采样器的合成器单元的一部分,因此该设备具有足够的计算能力。