我正在尝试使用AVAudioEngine来录制麦克风和声音文件(当用户点击按钮时播放的声音)。我已将mic inputNode连接到mainMixer,以及一些用于播放声音文件的AVAudioPlayerNodes。我在mainMixer上安装了一个水龙头来捕获声音并将其写入文件。声音也会传送到扬声器。
这是我的音频图表的基本布局:
-------------
mic --> | |
| mainMixer | --> speaker
file --> | |
-------------
|
tap
(writes to file)
默认情况下,声音通过接收器/耳机而不是iPhone底部的扬声器播放。
不幸的是,这意味着通过扬声器输出的声音太低而且难以听到 - 我希望用户能够在播放和录制时听到声音文件。所以我希望通过底部扬声器播放声音效果。
如果我改变音频会话以使用底部扬声器进行播放,我会得到一个反馈循环,因为麦克风输入和底部扬声器播放的声音再次被麦克风拾取。 (奇怪的是,这适用于iPad,没有创建反馈循环。当然,iPad没有耳机,所以在该设备上,声音总是通过主扬声器听到。)
我有两个问题:
是否可以仅将声音文件路由到底部扬声器?我不想通过任何扬声器输出麦克风的声音。但是,麦克风和声音文件的声音都应该被记录下来。
为什么我会在iPhone上获得反馈循环而不是在iPad上?是否可以通过底部扬声器输出所有声音而无需获得反馈回路?