iosswiftwebrtcwebrtc-ios

WebRTC(iOS): local video is not getting stream on remote side


I am trying to make an app with Audio, video call using WebRTC.

remote video and audio are working properly in my app, but my local stream is not appearing on the client side.

here is what I have written to add a video track

let videoSource = self.rtcPeerFactory.videoSource()
let videoCapturer = RTCCameraVideoCapturer(delegate: videoSource)

guard let frontCamera = (RTCCameraVideoCapturer.captureDevices().first { $0.position == .front }),

    // choose highest res
    let format = (RTCCameraVideoCapturer.supportedFormats(for: frontCamera).sorted { (f1, f2) -> Bool in
        let width1 = CMVideoFormatDescriptionGetDimensions(f1.formatDescription).width
        let width2 = CMVideoFormatDescriptionGetDimensions(f2.formatDescription).width
        return width1 < width2
    }).last,

    // choose highest fps
    let fps = (format.videoSupportedFrameRateRanges.sorted { return $0.maxFrameRate < $1.maxFrameRate }.last) else {
        print(.error, "Error in createLocalVideoTrack")
        return nil
}

videoCapturer.startCapture(with: frontCamera,
                           format: format,
                           fps: Int(fps.maxFrameRate))


self.callManagerDelegate?.didAddLocalVideoTrack(videoTrack: videoCapturer)
let videoTrack = self.rtcPeerFactory.videoTrack(with: videoSource, trackId:  K.CONSTANT.VIDEO_TRACK_ID)

and this is to add Audio track

let constraints: RTCMediaConstraints = RTCMediaConstraints.init(mandatoryConstraints: [:], optionalConstraints: nil)

let audioSource: RTCAudioSource = self.rtcPeerFactory.audioSource(with: constraints)
let audioTrack: RTCAudioTrack = self.rtcPeerFactory.audioTrack(with: audioSource, trackId: K.CONSTANT.AUDIO_TRACK_ID)

my full webRTC log attached here.

some logs I am getting (I think this is something wrong)

(thread.cc:303): Waiting for the thread to join, but blocking calls have been disallowed
(basic_port_allocator.cc:1035): Port[31aba00:0:1:0:relay:Net[ipsec4:2405:204:8888:x:x:x:x:x/64:VPN/Unknown:id=2]]: Port encountered error while gathering candidates.

...

(basic_port_allocator.cc:1017): Port[38d7400:audio:1:0:local:Net[en0:192.168.1.x/24:Wifi:id=1]]: Port completed gathering candidates.
(basic_port_allocator.cc:1035): Port[3902c00:video:1:0:relay:Net[ipsec5:2405:204:8888:x:x:x:x:x/64:VPN/Unknown:id=3]]: Port encountered error while gathering candidates.

Solution

  • finally, find the solution it was due to TCP protocol in the TURN server.