我正在试着用谷歌的webRTC pod和webRTC做一个视频聊天应用。我面临的问题是在尝试使用扬声器进行声音输出时。如果访问扬声器成功,则声音开始从所有扬声器中发出,包括顶部的扬声器和扬声器;并且存在大量回声和噪音。但有时,它根本无法访问扬声器,我看到以下错误:
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收发信机里的所有远程音轨,但没有成功。
事先非常感谢您的帮助。
发布于 2020-08-21 19:06:29
一开始我想删除这个问题,然后想如果有人像我一样偶然发现了它,所以:
下面解决了有时无法访问的问题。
self.rtcAudioSession.setCategory(AVAudioSession.Category.playAndRecord.rawValue, with: [.defaultToSpeaker, .allowBluetoothA2DP, .allowAirPlay, .allowBluetooth])至于耳机和扬声器发出的声音,我尝试了多个VoIP应用程序,它的表现是一样的。看起来这就是苹果想要的工作方式,所以没什么好干涉的。
https://stackoverflow.com/questions/63359928
复制相似问题