8

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

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

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

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

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

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

我有两个问题:

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

  2. 为什么我在 iPhone 上得到反馈循环,但在 iPad 上却没有?是否可以在没有反馈回路的情况下通过底部扬声器输出所有声音?

4

0 回答 0