how switch camera in ios?

how switch camera in ios?

      hi!

            how switch camera in ios? 

          I use :

               self.myCamera = AVCaptureDevice.defaultDevice(withDeviceType: .builtInWideAngleCamera, mediaType: AVMediaTypeVideo, position: .front)

              let cameraid=self.myCamera?.uniqueID

              self.myCameraPar=RTCLocalCameraStreamParameters(videoEnabled: true, audioEnabled: true)
            // [parameters setResolutionWidth:352 height:288];
                self.myCameraPar?.setResolutionWidth(352, height: 288)
            
                self.myCameraPar?.setCameraId(cameraid!) 
            
                self.localCanmerStream=RTCLocalCameraStream(parameters: self.myCameraPar!)

          I switch camera,but no success! 

             /*

 let session =  AVCaptureSession()
            
            do {
                let    Input1 = try AVCaptureDeviceInput(device: self.myCamera)
                let    Input2 = try AVCaptureDeviceInput(device: self.myCamera2)
                
                session.beginConfiguration()
                
                
                session.removeInput(Input1)
                
                let b =  session.canAddInput(Input2)
                if(b)
                {
                    session.addInput(Input2)
                    print("okOKokok")
                }
                else
                {
                    print("nononono")
                }
               
                
                session.commitConfiguration()
                session.startRunning()

   */

 I look at API  "RTCAVFoundationVideoSource" ,but I can not use.

        let t = RTCAVFoundationVideoSource.init(constraints: <#T##RTCMediaConstraints!#>)
            
            t?.useBackCamera = true 

 

 

4 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hi,

I 've set source and localstream like below 

source = RTCAVFoundationVideoSource(constraints: mediaConstraints)

source?.useBackCamera = true

localStream = RTCLocalCameraStream(audioEnabled: true, videoSource: source!, error: nil)

and after this just use useBackCamera (true|false)  inside my changeCamera() function. I didn't use any cameraParameter.

 

 

 

 

 

 

 

 

 

 

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #4f8187; background-color: #ffffff}
span.s1 {color: #000000}

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #4f8187; background-color: #ffffff}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; background-color: #ffffff; min-height: 14.0px}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #000000; background-color: #ffffff}
span.s1 {color: #000000}
span.s2 {color: #4f8187}
span.s3 {color: #ba2da2}

For iOS SDK , switch camera can be done through set useBackCamera as Yes /NO

Following is example code , you can include it to your SwitchCamera() function and it will switch camera over successive calls when i is even or odd

    static int i = 0;
    NSDictionary *mandatoryConstraints = @{@"minWidth" : @"640", @"minHeight" : @"480",@"maxWidth" : @"640", @"maxHeight" : @"480", @"maxFrameRate":@"24", @"minFrameRate":@"24"};
    RTCMediaConstraints* constraints = [[RTCMediaConstraints alloc] initWithMandatoryConstraints:mandatoryConstraints optionalConstraints:nil];
    RTCAVFoundationVideoSource* source=[[RTCAVFoundationVideoSource alloc] initWithConstraints:constraints];
    if((i++)%2 == 1){
      source.useBackCamera = YES;
    }else{
      source.useBackCamera = NO;
    }
    NSError *err=[[NSError alloc]init];
    _localStream=[[RTCLocalCameraStream alloc]initWithAudioEnabled:YES VideoSource:source error: &err];

 

 

 

Hi , Thank you all。   My problem has been solved

 //////////////////////////////////////////////////////

 let mandatoryConstraints = ["minWidth":"640","minHeight":"480","maxWidth":"640","maxHeight":"480","maxFrameRate":"16","minFrameRate":"16"]
                
                let constraints = RTCMediaConstraints(mandatoryConstraints: mandatoryConstraints, optionalConstraints: nil)
                
                self.mVideoSource = RTCAVFoundationVideoSource(constraints: constraints)
                
                self.mVideoSource?.useBackCamera = false
                
                self.mIsBackCamera = false
                
                self.localCanmerStream=RTCLocalCameraStream(audioEnabled: true, videoSource: self.mVideoSource!, error: nil)

 

func switchCamera()
        {
            if mIsBackCamera
            {
                self.mVideoSource?.useBackCamera = false
                mIsBackCamera = false
            }
            else
            {
                self.mVideoSource?.useBackCamera = true
                mIsBackCamera = true
            }
        }

//////////////////////////////////////////////////////////////////////////////////////////

                                                          Thinks!

 

 

  

Leave a Comment

Please sign in to add a comment. Not a member? Join today