我正在使用版本为“1.1.29400”的“GoogleWebRTC”吊舱。我一直面临关闭对等连接的问题。无论哪个线程试图关闭连接,都会永远卡在下面的行中。
self.peerConnection?.close()
所以我选择不关闭对等连接,而是手动销毁捕获器、轨道、渲染器、收发器并将引用设置为 nil。以为我解决了这个问题,但我没有。
现在开始面临“RTCPeerConnectionFactory”的问题。在从工厂生成一些对等连接后,从工厂请求新的 peerConnection 的线程永远卡住了。
这是我初始化工厂的方法,
static let factory: RTCPeerConnectionFactory = {
RTCInitializeSSL()
let videoEncoderFactory = RTCDefaultVideoEncoderFactory()
let videoDecoderFactory = RTCDefaultVideoDecoderFactory()
return RTCPeerConnectionFactory(encoderFactory: videoEncoderFactory, decoderFactory: videoDecoderFactory)
}()
这是我初始化对等连接的方式,
let config = RTCConfiguration()
config.iceServers = iceServers
config.sdpSemantics = .unifiedPlan
config.continualGatheringPolicy = .gatherOnce
config.iceTransportPolicy = iceTransportPolicy
let constraints = RTCMediaConstraints(mandatoryConstraints: nil, optionalConstraints: ["DtlsSrtpKeyAgreement": kRTCMediaConstraintsValueTrue])
let factory = WebRtcClient.factory
self.peerConnection = factory.peerConnection(with: config, constraints: constraints, delegate: nil)
可能出了什么问题?
并行 peerConnections 的数量是否有限制?
对创建/操作/销毁 peerConnection 的线程类型是否有任何限制?
我应该设置对这些对象的同步访问吗?