AVAudioEngine独立频道

时间:2016-10-10 13:45:18

标签: ios objective-c swift core-audio avaudioengine

我有一个立体声音频文件,我尝试将音频通道分开。导致具有左音频的总线和具有正确音频信号的总线。在这些通道上,我想做一些操作,然后再将它们合并为一个立体声信号。

读取音频文件,在总线上进行操作并将其合并为单个信号是没有问题的(虽然我还没有测试过这个信号是否为立体声,因为它取决于我猜测的先前通道)。 / p>

我的问题是分离左右声道,所以我可以独立修改它们。

我的一个想法是使用pan的{​​{1}}属性来仅向左/向右显示信号,但似乎(如文档中所述)此属性尚未实现AVAudioPlayerNode(尽管在WWDC视频的所有示例中都使用了它。)

我找到的另一个解决方案是this。使用AVAudioPlayerNode创建新缓冲区。我还没试过这个,因为我觉得这需要相当长的时间而且不适合普通玩家。

第三,有一个名为audiokit的框架。这提供了将流转换为单声道左/右声道然后通过创建memcpy再次合并信号的选项。我对这个解决方案的问题是,这是一个非常简单的用例。分离音频通道。为此,我发现很难证明包含如此庞大的框架,即使它可能有效(未经测试)。

是否有一种简单的方法来分隔频道?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用原始样本并使用AudioConverter创建AudioConverterNew,并将AudioStreamBasicDescription配置为对立体声通道进行去交错。这将产生一个缓冲区,其中一个通道首先连续,第二个通道位于缓冲区的后半部分。