AVAudioEngine可录制麦克风和声音文件,避免反馈循环

时间:2015-12-06 11:30:57

标签: ios audio avfoundation avaudioengine

我正在尝试使用AVAudioEngine来录制麦克风和声音文件(当用户点击按钮时播放的声音)。我已将mic inputNode连接到mainMixer,以及一些用于播放声音文件的AVAudioPlayerNodes。我在mainMixer上安装了一个水龙头来捕获声音并将其写入文件。声音也会传送到扬声器。

这是我的音频图表的基本布局:

         -------------
mic  --> |           |
         | mainMixer | --> speaker
file --> |           |
         -------------
               |
              tap
        (writes to file)

默认情况下,声音通过接收器/耳机而不是iPhone底部的扬声器播放。

不幸的是,这意味着通过扬声器输出的声音太低而且难以听到 - 我希望用户能够在播放和录制时听到声音文件。所以我希望通过底部扬声器播放声音效果。

如果我改变音频会话以使用底部扬声器进行播放,我会得到一个反馈循环,因为麦克风输入和底部扬声器播放的声音再次被麦克风拾取。 (奇怪的是,这适用于iPad,没有创建反馈循环。当然,iPad没有耳机,所以在该设备上,声音总是通过主扬声器听到。)

我有两个问题:

  1. 是否可以仅将声音文件路由到底部扬声器?我不想通过任何扬声器输出麦克风的声音。但是,麦克风和声音文件的声音都应该被记录下来。

  2. 为什么我会在iPhone上获得反馈循环而不是在iPad上?是否可以通过底部扬声器输出所有声音而无需获得反馈回路?

0 个答案:

没有答案