在 iPhone 上录制播放和麦克风
Posted
技术标签:
【中文标题】在 iPhone 上录制播放和麦克风【英文标题】:Recording playback and mic on IPhone 【发布时间】:2011-05-17 20:47:00 【问题描述】:在 iPhone SDK 4.3 中,我想通过 Remote IO 记录通过扬声器播放的内容,并记录麦克风输入。我想知道最好的方法是否将每个单独录制到音频文件中的不同通道。如果是这样,哪些 api 允许我这样做,我应该使用什么音频格式。我正计划使用 ExtAudioFileWrite 来实际写入文件。
谢谢
【问题讨论】:
【参考方案1】:如果您拥有的两个轨道都是单声道,16 位整数,采样率相同:
format->mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;
format->mBitsPerChannel = 16;
您可以将这些轨道组合到 2 通道 PCM,只需将一个轨道的样本与另一个轨道的样本交替。
[short1_track1][short1_track2][short2_track1][short2_track2]
等等。
之后,您可以使用 ExtAudioFileWrite 将此样本写入输出文件。该文件当然应该是 2 通道 kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked
。
如果其中一个轨道是立体声(我认为从 iphone 麦克风录制立体声不合理),您可以通过取 2 个通道的平均值或跳过它的每个第二个样本将其转换为单声道。
【讨论】:
【参考方案2】:您可以从 RemoteIO 音频单元的播放和录制回调缓冲区中分别保存 PCM 数据,然后使用您自己的混音器代码(DSP 代码)将它们混合,然后再将混合结果写入文件。
您可能需要也可能不需要自己进行回声消除(高级 DSP 代码)。
【讨论】:
以上是关于在 iPhone 上录制播放和麦克风的主要内容,如果未能解决你的问题,请参考以下文章