gpt4 book ai didi

swift - 扬声器问题 - WebRTC 和 iOS

转载 作者:行者123 更新时间:2023-12-04 01:16:01 27 4
gpt4 key购买 nike

我正在尝试使用 google 的 webRTC pod 制作一个带有 webRTC 的视频聊天应用程序。我面临的问题是在尝试使用扬声器输出声音时。如果访问扬声器成功,声音开始从所有扬声器发出,包括顶部的扬声器和扬声器;并且有很多回声和噪音。但有时,它根本无法访问扬声器,我看到了这个错误:

Error Domain=NSOSStatusErrorDomain Code=-50 

我主要使用了这个 repo 中的 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 收发器中的所有远程轨道,但没有成功。

非常感谢您的帮助。

最佳答案

首先我想到删除这个问题,然后想到是否有人像我一样偶然发现它,所以:

以下解决了有时无法访问的问题。

self.rtcAudioSession.setCategory(AVAudioSession.Category.playAndRecord.rawValue, with: [.defaultToSpeaker, .allowBluetoothA2DP, .allowAirPlay, .allowBluetooth])

至于从听筒和扬声器发出的声音,我尝试了多个 VoIP 应用程序,它们的表现是一样的。看起来这就是 Apple 希望它的工作方式,所以没有什么可以干扰的。

关于swift - 扬声器问题 - WebRTC 和 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63359928/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com