iOS音频混合

问题描述:

当混合两个音频文件时,这段代码显示一个声音被视为立体声而另一个被视为单声道,为什么?为什么他们都不能被视为立体声?iOS音频混合

@property (readwrite)   AudioStreamBasicDescription stereoStreamFormat; 
@property (readwrite)   AudioStreamBasicDescription monoStreamFormat; 

音频文件的检查就是这样的。

if ((inputDataFormat.mFormatID == kAudioFormatLinearPCM) && 
    (inputDataFormat.mSampleRate == 44100.0) && 
    (inputDataFormat.mChannelsPerFrame == 2) && 
    (inputDataFormat.mChannelsPerFrame == 2) && 
    (inputDataFormat.mBitsPerChannel == 16) && 
    (inputDataFormat.mFormatFlags == (kAudioFormatFlagsNativeEndian | 
             kAudioFormatFlagIsPacked | kAudioFormatFlagIsSignedInteger)) 
    ) { 
    // no-op when the expected data format is found 
} else { 
    status = kAudioFileUnsupportedFileTypeError; 
    goto reterr; 
} 

为什么遇到该数据格式时会触发无操作条件?

当混合两个音频,这段代码显示一个声音被视为立体声,另一个被视为单声道,为什么?

这是您正在使用的任何库的实现细节。

为什么不能将它们视为立体声?

那么,他们当然可以,如果你写支持代码复制的信号“/流”数据。通常情况下,你会而不是做到这一点,而是保持区别(如原作者已经完成),所以你的渲染链不会增加渲染或文件大小。

为什么遇到这种数据格式时不存在禁用条件?

这只是作者的书面风格。这种表达可以用几种方式来写。