iOS8 AVAudioEngine 如何将麦克风输入路由到(底部)扬声器输出?

Posted

技术标签:

【中文标题】iOS8 AVAudioEngine 如何将麦克风输入路由到(底部)扬声器输出?【英文标题】:iOS8 AVAudioEngine how do I route microphone input to the (bottom) speaker output? 【发布时间】:2014-10-11 08:45:15 【问题描述】:

我已经能够连接 AVAudioInputNode(它接收麦克风输入数据)并将其连接到 AVAudioEngine。如果我将手机放在离耳朵足够近的地方,我可以听到(上部)扬声器的输出。如何将音频输出路由到(底部)扬声器? (把它想象成一个扬声器......)

【问题讨论】:

【参考方案1】:

获取您的AVAudiosessionsharedInstance。然后调用setCategory:withOptions:error,传入以下参数:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:Nil];

【讨论】:

嗨尼克,谢谢您的回复。我尝试设置 AudioSession,但我从(底部)扬声器中得到了乱七八糟的环境噪音,如果我说了什么,扬声器就没有声音...... 那么你的代码其他地方有问题。发布一个专门针对下扬声器发出的“胡言乱语”噪音的新问题,发布相关代码,我们可以从那里开始。 嗨,尼克,您似乎在音频相关方面有经验。你能看看我的其他相关问题吗?谢谢。 ***.com/questions/26270127/… 如何通过网络发送 PCMBuffer?我使用 MultiPeer 发送,但我不知道如何在 didReceiveData 中将其转换回 AVAudioPCMBuffer。这是我的发送代码:MCPeerID *remotePeerID = [self.sessionMC.connectedPeers objectAtIndex:0]; NSArray *peersArray = @[remotePeerID]; NSError *error = nil; NSData *data = [NSData dataWithBytes:buffer.floatChannelData length:buffer.frameLength]; [self.sessionMC sendData:data toPeers:peersArray withMode:MCSessionSendDataReliable error:&error]; if(error) NSLog(@"error: %@", [error localizedDescription]);【参考方案2】:

这是我快速完成的方法

//In declarations
var audioSession:AVAudioSession = AVAudioSession.sharedInstance()
//In viewDidLoad 
audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: AVAudioSessionCategoryOptions.DefaultToSpeaker, error: nil)

【讨论】:

谢谢! :) 但我得到了Ambiguous reference to member 'setCategory'Error。对我来说,它通过删除错误部分起作用(Swift 2.2):try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: AVAudioSessionCategoryOptions.DefaultToSpeaker)

以上是关于iOS8 AVAudioEngine 如何将麦克风输入路由到(底部)扬声器输出?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 AVAudioEngine 连接到 Lightning Port 音频输入?

Swift AVAudioEngine - 如何使本地麦克风静音

在 WatchOS 上使用 AVAudioEngine 录制时阻止播放

如何使用 AVAudioEngine 取消或消除回声/重复声音?

使用 AVAudioEngine 进行电平测量

如何指定 AVAudioEngine Mic-Input 的格式?