我有一个立体声音频文件,我尝试将音频通道分开。导致具有左音频的总线和具有正确音频信号的总线。在这些通道上,我想做一些操作,然后再将它们合并为一个立体声信号。
读取音频文件,在总线上进行操作并将其合并为单个信号是没有问题的(虽然我还没有测试过这个信号是否为立体声,因为它取决于我猜测的先前通道)。 / p>
我的问题是分离左右声道,所以我可以独立修改它们。
我的一个想法是使用pan
的{{1}}属性来仅向左/向右显示信号,但似乎(如文档中所述)此属性尚未实现AVAudioPlayerNode
(尽管在WWDC视频的所有示例中都使用了它。)
我找到的另一个解决方案是this。使用AVAudioPlayerNode
创建新缓冲区。我还没试过这个,因为我觉得这需要相当长的时间而且不适合普通玩家。
第三,有一个名为audiokit的框架。这提供了将流转换为单声道左/右声道然后通过创建memcpy
再次合并信号的选项。我对这个解决方案的问题是,这是一个非常简单的用例。分离音频通道。为此,我发现很难证明包含如此庞大的框架,即使它可能有效(未经测试)。
是否有一种简单的方法来分隔频道?
谢谢!
答案 0 :(得分:1)
您可以使用原始样本并使用AudioConverter
创建AudioConverterNew
,并将AudioStreamBasicDescription
配置为对立体声通道进行去交错。这将产生一个缓冲区,其中一个通道首先连续,第二个通道位于缓冲区的后半部分。