I have installed pod 'WebRTC' for audio/video calling in my app. In storyboard I have two UIView with class "RTCVideoRenderer". Below is my code. I'm following this
func configureClient() {
let iceServers = RTCIceServer.init(urlStrings: [stunServer])
let client = RTCClient.init(iceServers: [iceServers], videoCall: true)
client.delegate = self
self.client = client
client.startConnection()
}
extension ViewController: RTCClientDelegate {
func rtcClient(client: RTCClient, didCreateLocalCapturer capturer: RTCCameraVideoCapturer) {
let settingsModel = RTCCapturerSettingsModel()
self.captureController = RTCCapturer.init(withCapturer: capturer, settingsModel: settingsModel)
captureController.startCapture()
}
func rtcClient(client: RTCClient, didGenerateIceCandidate iceCandidate: RTCIceCandidate) {
print("iceCandidate generated")
}
func rtcClient(client: RTCClient, didReceiveLocalVideoTrack localVideoTrack: RTCVideoTrack) {
DispatchQueue.main.async {
localVideoTrack.add(self.localVideoView)
self.localVideoTrack = localVideoTrack
}
}
func rtcClient(client: RTCClient, startCallWithSdp sdp: String) {
print("SDP generated")
}
func rtcClient(client: RTCClient, didReceiveRemoteVideoTrack remoteVideoTrack: RTCVideoTrack) {
DispatchQueue.main.async {
remoteVideoTrack.add(self.remoteVideoView)
self.remoteVideoTrack = remoteVideoTrack
}
}
func rtcClient(client : RTCClient, didReceiveError error: Error) {
print("Error Received: \(error)")
}
}
This is crashing with errors:
Main Thread Checker: UI API called on a background thread: -[UIView setSize:] PID: 9951, TID: 2583661, Thread name: (none), Queue name: com.apple.avfoundation.videodataoutput.bufferqueue, QoS: 0
[UIView renderFrame:]: unrecognized selector sent to instance 0x101501840 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView renderFrame:]: unrecognized selector sent to instance 0x101501840'