我正在尝试使用 google 的 webRTC pod 制作一个带有 webRTC 的视频聊天应用程序。我面临的问题是在尝试使用扬声器输出声音时。如果访问扬声器成功,所有扬声器开始发出声音,包括顶部扬声器和外放扬声器;并且有很多回声和噪音。但有时,它根本无法访问扬声器,我会看到以下错误:
Error Domain=NSOSStatusErrorDomain Code=-50
Run Code Online (Sandbox Code Playgroud)
我主要使用此存储库中的 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()
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试将 rtcAudioSession 设置为非活动状态,但这是不可能的,因为有 I/O 正在进行。我尝试暂停 webRTC 收发器中的所有远程轨道,但没有成功。
预先非常感谢您的帮助。