【问题标题】:Recording playback and mic on IPhone在 iPhone 上录制播放和麦克风
【发布时间】:2011-05-17 20:47:00
【问题描述】:

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

谢谢

【问题讨论】:

    标签: iphone


    【解决方案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 代码)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-29
        • 1970-01-01
        相关资源
        最近更新 更多