我正在尝试使用谷歌的WebRTC Pod制作视频聊天应用程序。我面临的问题是在尝试使用扬声器进行声音输出时。如果成功访问扬声器,则声音将从所有扬声器(包括顶部和扬声器上的扬声器)中传出,并且会有很多回声和噪音。有时,它根本无法访问扬声器,我会看到这个错误:
Error Domain=NSOSStatusErrorDomain Code=-50
我主要使用了这个仓库中的webRTC部分:https://github.com/lg-tawsenior/WebRTC-iOS/blob/master/WebRTC-Demo-App/Sources/Services/WebRTCClient.swift
试图通过扬声器输出的函数是:
func speakerOn() {
self.audioQueue.async { [weak self] in
guard let self = self else {
return
}
self.rtcAudioSession.lockForConfiguration()
do {
try self.rtcAudioSession.setCategory(AVAudioSession.Category.playAndRecord.rawValue)
try self.rtcAudioSession.overrideOutputAudioPort(AVAudioSession.PortOverride.speaker)
try self.rtcAudioSession.setActive(true)
} catch let error {
debugPrint("Couldn't force audio to speaker: \(error)")
}
self.rtcAudioSession.unlockForConfiguration()
}
}
我尝试设置 rtcAudioSession 为不活动状态,但是无法实现,因为有 I/O 操作正在进行。我尝试暂停 WebRTC transceivers 中的所有远程轨道,但没有成功。
非常感谢您提前的帮助。