我有一个 4 channel 的音频格式,我想将其转换为 2 channel 格式。 kAudioConverterChannelMap
只能丢弃额外的输入:
When In > Out, the first Out inputs are routed to the first Out outputs, and the remaining inputs are discarded.
是否可以使用 kAudioConverterChannelMap
指定 channel 映射,将 1 + 2 channel 合并为一个输出格式,将 3 + 4 channel 合并为第二个输出格式?
如果没有,我应该使用什么来进行此转换?
最佳答案
据我所知,除了丢弃额外的 channel 之外,Apple 并未提供减少音频流 channel 数的 API。
为什么?我想是因为你如何做到这一点是一个个人选择,如果他们真的考虑过这一点,他们可能会得出这样的结论:没有一种方法能让每个人都满意,所以最好选择能让每个人都满意的方法生气:丢弃。那么有什么大不了的呢?我认为这主要与各个 channel 的“意义”有关。考虑将立体声转换为单声道的“明显简单”的情况 - 它是 surprisingly nuanced ,取决于立体声音频的录制方式。 这是在理想情况下,您的 2 channel 音频实际上被声明为“立体声”(例如,通过 AudioChannelLayoutTag
(例如 kAudioChannelLayoutTag_Stereo
))。
因此,即使是“标记”的多声道音频也非常模糊,因此唯一知道如何解释和减少您的 4 声道音频的声道数的人就是您.
也就是说,如果使用一些 Accelerate/vDSP
数组函数(例如 vDSP_vadd
)来提供一个将偶数 channel 与偶数 channel 求和、奇数 channel 与奇数 channel 求和的函数,会杀死他们吗?因为这可能就是您想要的。
关于ios - 具有不同 channel 数的 AudioConverterRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70701926/