在iPhone上录制播放和麦克风

时间:2011-05-17 20:47:01

标签: iphone

在iPhone SDK 4.3中,我想通过Remote IO录制通过扬声器播放的内容,并录制麦克风输入。我想知道最好的方法是将每个单独记录到音频文件中的不同频道。如果是这样,api允许我这样做,我应该使用什么音频格式。我打算使用ExtAudioFileWrite来实际写入文件。

由于

2 个答案:

答案 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代码)。