我正在开发一个应用,其中我正在使用twilio进行视频通话。现在,当我进行视频通话时,它可以正常运行。但是双方的声音都在扬声器上,我想给用户提供它可以使用扬声器或麦克风讲话的灵活性,我该如何使用Swift做到这一点?我已经搜索过了,它向我显示了此功能,该功能在扬声器中启用和禁用,但不转换为麦克风。我如何将扬声器声音转换为麦克风或将麦克风转换为扬声器?
@IBAction func speakerBtnTapped(_ sender: Any) {
if (self.localAudioTrack != nil) {
//MARK:- Usage for Enable
self.setAudioOutputSpeaker(enabled: true)
}
else
{
//MARK:- Usage for Disable
self.setAudioOutputSpeaker(enabled: false)
}
}
//MARK:- Manual Speaker Enagle and Disable
func setAudioOutputSpeaker(enabled: Bool)
{
let session = AVAudioSession.sharedInstance()
var _: Error?
try? session.setCategory(AVAudioSessionCategoryPlayAndRecord)
try? session.setMode(AVAudioSessionModeVoiceChat)
if enabled {
try? session.overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
} else {
try? session.overrideOutputAudioPort(AVAudioSessionPortOverride.none)
}
try? session.setActive(true)
}
答案 0 :(得分:0)
如果我对您的理解正确,那么您想提供一个功能,用户可以选择语音输入方式,扬声器或麦克风,那么该功能在现有的iOS技术中不可用
没有方法overrideIutputAudioPort
,只有您可以overrideOutputAudioPort
,然后根据您的选择将传入的语音发送到扬声器或麦克风。
现在,如果overrideOutputAudioPort是扬声器,那么输入是扬声器,反之亦然
您还可以引用最受欢迎的应用,例如WhatsApp,Google Duo,但不存在此类选项。
希望有帮助
答案 1 :(得分:0)
Swift 5-使用以下代码段
///在连接到会议室后更改音频路由。
func moveToMic(){
audioDevice.block = {
DefaultAudioDevice.DefaultAVAudioSessionConfigurationBlock()
do {
try AVAudioSession.sharedInstance().setMode(.voiceChat)
try AVAudioSession.sharedInstance().overrideOutputAudioPort(.none)
} catch {
print(error)
}
}
audioDevice.block();
}