Malik Boy
Malik Boy

Reputation: 132

Disable auto focus during video recording using AVCam

I am using video recording from AVCam. Auto focus works fine before video recording is started. But it keeps on focusing after the video has started recording which is an annoying behavior. I have disabled video stabilization in AVCaptureConnection but still no use

AVCaptureConnection *connection = [movieFileOutput connectionWithMediaType:AVMediaTypeVideo];

        if ([connection isVideoStabilizationSupported]) {

            if (SYSTEM_VERSION_LESS_THAN(@"8.0")) {
                // For iOS 7
                [connection setEnablesVideoStabilizationWhenAvailable:NO];

            } else {
                connection.preferredVideoStabilizationMode = AVCaptureVideoStabilizationModeOff;
            }
        } 

Please guide me how can I disable auto focus during video recording?

Upvotes: 0

Views: 401

Answers (1)

Malik Boy
Malik Boy

Reputation: 132

I have called following method from viewDidLoad to achieve required functionality

- (void)disableAutoFocus {
    AVCaptureDevice *device = [[self videoDeviceInput] device];
    [device lockForConfiguration:nil];

    NSArray *devices = [AVCaptureDevice devices];
    NSError *error;
    for (AVCaptureDevice *device in devices) {
        if (([device hasMediaType:AVMediaTypeVideo]) &&
            ([device position] == AVCaptureDevicePositionBack) ) {
            [device lockForConfiguration:&error];
            if ([device isFocusModeSupported:AVCaptureFocusModeLocked]) {
                device.focusMode = AVCaptureFocusModeLocked;
                NSLog(@"Focus locked");
            }

            [device unlockForConfiguration];
        }
    }
}

Upvotes: 1

Related Questions