在iPhone SDK 4.3中,我想通过Remote IO录制通过扬声器播放的内容,并录制麦克风输入。我想知道最好的方法是将每个单独记录到音频文件中的不同频道。如果是这样,api允许我这样做,我应该使用什么音频格式。我打算使用ExtAudioFileWrite来实际写入文件。
由于
答案 0 :(得分:1)
如果您拥有的两个音轨都是单声道,16bit整数且采样率相同:
format->mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;
format->mBitsPerChannel = 16;
只需将一个轨道的样本与另一个轨道的样本交替,就可以将这些轨道组合到2个通道PCM中。
[short1_track1][short1_track2][short2_track1][short2_track2]
等等。
之后,您可以使用ExtAudioFileWrite将此示例写入输出文件。那个文件当然应该是2个频道kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked
。
如果其中一个音轨是立体声(我不认为从iphone麦克风录制立体声是合理的),你可以通过从2个通道取平均值或跳过它的每一个样本将其转换为单声道。 / p>
答案 1 :(得分:0)
您可以从播放和录制RemoteIO音频单元的回调缓冲区中单独保存PCM数据,然后使用您自己的混音器代码(DSP代码)将它们混合,然后将混合结果写入文件。
您可能也可能不需要自己进行回声消除(高级DSP代码)。