Video freezes on camera switch with AVFoundation

前端 未结 2 747
闹比i
闹比i 2020-12-30 13:35

I made an app with a feature to capture and save video. I have used AVFoundation for that and Apple\'s AVCam has been my guide.

I hope I can make it clear:
Every

2条回答
  •  星月不相逢
    2020-12-30 14:29

    Try this—it worked like a champ for me:

    BOOL isUsingFrontFacingCamera;
    
    - (BOOL) swapCameras
    {
        if ([self cameraCount] > 1) {
            AVCaptureDevicePosition desiredPosition;
            if (isUsingFrontFacingCamera) {
                desiredPosition = AVCaptureDevicePositionBack;
            } else {
                desiredPosition = AVCaptureDevicePositionFront;
            }
    
            for (AVCaptureDevice *d in [AVCaptureDevice devicesWithMediaType: AVMediaTypeVideo]) {
                if ([d position] == desiredPosition) {
                    [[self session] beginConfiguration];
                    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:d error:nil];
                    for (AVCaptureInput *oldInput in [[self session] inputs]) {
                        [[self session] removeInput:oldInput];
                    }
                    [[self session] addInput:input];
                    [[self session] commitConfiguration];
                    break;
                }
            }
            isUsingFrontFacingCamera = !isUsingFrontFacingCamera;
            return YES;
        }
        return NO;
    }
    

    You should be able to drop this code in to replace the original swapCameras in VideoRecorderCaptureManager.m

    Origin: Apple's SquareCam sample code.

提交回复
热议问题