我有一个立体声音频文件,我尝试为它分离音频通道。从而产生具有左音频的总线和具有右音频信号的总线。在这些通道上,我想做一些操作,然后再将它们合并成一个单一的立体声信号。
读取音频文件,在总线上进行操作,并将其合并为单个信号是没有问题的(尽管我还没有测试这个信号是否是立体声的,因为我想它取决于之前的通道)。
我的问题是将左右声道分开,所以我可以独立地修改它们。
我的一个想法是使用AVAudioPlayerNode的pan属性来只显示左/右信号,但似乎(正如文档中提到的)该属性还没有在AVAudioPlayerNode中实现(即使在所有的WWDC视频示例中都使用了该属性)。
我找到的另一个解决方案是this。使用memcpy创建新的缓冲区。我还没有尝试过,因为我猜这需要相当长的时间,不适合一个普通的玩家。
第三,有一个名为audiokit的框架。这提供了将流转换为单声道左/右声道,然后通过创建AKStereoOperation再次合并信号的选项。我对这个解决方案的问题是,它是一个非常简单的用例。分离音频通道。为此,我发现很难证明包含这样一个巨大的框架是合理的,即使它可能会工作(未经过测试)。
有没有一种简单的方法来分离通道?
谢谢!
发布于 2016-10-15 08:01:26
您可以获取原始样本,并使用配置为对立体声通道进行去交错的AudioConverterNew和output AudioStreamBasicDescription来创建AudioConverter。这将导致一个缓冲区,其中一个通道连续地位于缓冲区的第一个通道中,第二个通道位于缓冲区的后半部分。
https://stackoverflow.com/questions/39959787
复制相似问题