我有一个立体声音频文件,我尝试为其分离音频 channel 。导致总线具有左音频信号,总线具有右音频信号。我想在这些 channel 上做一些操作,然后将它们再次合并为一个立体声信号。
读取音频文件,在总线上进行操作并将其合并为一个信号是没有问题的(虽然我没有测试这个信号是否是立体声,因为我猜这取决于之前的 channel )。
我的问题是分离左右声道,所以我可以独立修改它们。
我的一个想法是使用 AVAudioPlayerNode
的 pan
属性让信号只向左/向右,但看起来(如文档中所述)这属性尚未在 AVAudioPlayerNode
中实现(尽管在 WWDC 视频的所有示例中都使用了它)。
我找到的另一个解决方案是 this .使用 memcpy
创建新缓冲区。我还没有尝试过这个,因为我猜这需要相当长的时间并且不适合普通玩家。
第三个是一个叫做audiokit的框架。 .这提供了将流转换为单声道左/右声道然后通过创建 AKStereoOperation
再次合并信号的选项。我对这个解决方案的问题是,它是一个非常简单的用例。分离音频 channel 。为此,我发现很难证明包含如此庞大的框架是合理的,即使它可能会工作(未经测试)。
有没有简单的方法来分离 channel ?
谢谢!
最佳答案
您可以获取原始样本并使用 AudioConverterNew
创建一个 AudioConverter
并输出 AudioStreamBasicDescription
配置为解交错立体声 channel 。这将导致一个缓冲区的第一个 channel 连续,第二个 channel 位于缓冲区的后半部分。
关于ios - AVAudioEngine 分离 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39959787/