更改iOS上AUGraph的采样率

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

我一直在浏览苹果的文档,并没有find一种方法来设置运行时的采样率。 我一直在想三个可能的解决方法:

  1. 每次需要更改采样率时,重新初始化AUGraph;
  2. 为每个不同的采样率初始化一个不同的AUGraph;
  3. 在播放之前转换每个声音的采样率;

这些方法在处理器上似乎都很笨重。

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

通常为连续audiostream场景的#1。

您的程序可能有一个特殊的需要或利用其他方法列出您的方法:

  • #2:你需要处理重新初始化不重要的地方。
  • #3:您需要同时混合处理具有不同input采样率的两个数据stream,特别是如果您发现自己多次使用该信号。

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

我很确定,它不能在运行时完成。 解决scheme#2是你最好的select,连同#3。 对于采样率转换,libsndfile可能可以适应您的需求。

如果您不希望延迟导致重buildaudiographics,则可能需要重新采样声音数据(除了一个采样率外)。

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