Camera freezing issue in iOS using webRTC video source

300 views
Skip to first unread message

Bhavani Chada

unread,
Sep 4, 2021, 6:47:56 AM9/4/21
to discuss...@googlegroups.com
Hi
I have implemented video calling application using webRTC where i'm using RTCVideosource for to get the local video capturing.I'm facing freezing issue with camera while flipping and when call is coming from background.I have gone through lot of research but didn't find any solution.Here i'm posting the code for camera flipping and initialization.Can anyone please help on this.
I'm using below code for video capturing

//
let videoSource = self.peerConnectionFactory.videoSource()  
 self.videoCapturer = RTCCameraVideoCapturer(delegate: videoSource)  
  let videoTrack = self.peerConnectionFactory.videoTrack(with: videoSource, trackId: "video0")
//
and below is the code for to switch the camera
//

if let capturer = self.videoCapturer as? RTCCameraVideoCapturer { var targetDevice: AVCaptureDevice? var targetFormat: AVCaptureDevice.Format?

        // find target device
        let devicies = RTCCameraVideoCapturer.captureDevices()
        print("devices count is :\(devicies.count)")
        devicies.forEach { (device) in
            if device.position ==  cameraPositon{
                targetDevice = device
            }
            else {
                print("camera position is:\(cameraPositon.rawValue)::\(device.position.rawValue):\(targetDevice)")
            }
            
        }
        
        // find target format
        let formats = RTCCameraVideoCapturer.supportedFormats(for: targetDevice!)
        print("supported formats are:\(formats)")
        formats.forEach { (format) in
            for _ in format.videoSupportedFrameRateRanges {
                let description = format.formatDescription as CMFormatDescription
                let dimensions = CMVideoFormatDescriptionGetDimensions(description)
                
                if dimensions.width == videoWidth && dimensions.height == videoHeight ?? 0{
                    targetFormat = format
                } else if dimensions.width == videoWidth {
                    targetFormat = format
                }
            }
        }
        print("target format is :\(targetDevice):\(targetFormat)")
        capturer.startCapture(with: targetDevice!,
                              format: targetFormat!,
                              fps: videoFps)
    } 
//
--
Regards,
Bhavani Chada
iOS Developer
ISTPL
Mobile:9948043146
Hyderabad

John Mikelich

unread,
Sep 15, 2021, 7:02:49 PM9/15/21
to discuss-webrtc
I've found that the webrtc capture session starts before the app is technically foregrounded, so then the capture session remains un-started.

Try putting in the didEnterFG notification listener, grabbing the captureSession from webrtc, and starting it again.

For example get 

RTCCameraVideoCapturer *rtcCapturer

from the setup of ARDCaptureController, then after a short wait (like a second)

[rtcCapturer.captureSession startRunning]


Bhavani Chada

unread,
Sep 23, 2021, 7:45:56 AM9/23/21
to discuss...@googlegroups.com
Thank you so much for your help.It is resolved.

--

---
You received this message because you are subscribed to the Google Groups "discuss-webrtc" group.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrt...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/discuss-webrtc/079051a6-2152-410c-a166-d2e29711fb69n%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages