Метод переключения входов камеры не работает в обратном порядке

У меня есть слой предварительного просмотра видео, который показывает видео с заданного входа. Я хочу, чтобы пользователь мог переключать камеру с помощью одной кнопки. Кнопка, которую я создал, переключит камеру с исходной камеры, обращенной назад, на камеру, обращенную вперед, но не работает в обратном направлении.

Вот метод:

- (IBAction)CameraToggleButtonPressed:(id)sender {
if (_captureSession) {

    NSLog(@"Toggle camera");
    NSError *error;
    AVCaptureInput *videoInput = [self videoInput];
    AVCaptureInput *newVideoInput;
    AVCaptureDevicePosition position = [[VideoInputDevice device] position];

    [_captureSession beginConfiguration];
    [_captureSession removeInput:_videoInput];
    [_captureSession removeInput:_audioInput];
    [_captureSession removeOutput:_movieOutput];
    [_captureSession removeOutput:_stillImageOutput];

    //Get new input
    AVCaptureDevice *newCamera = nil;
    if(((AVCaptureDeviceInput*)videoInput).device.position == AVCaptureDevicePositionBack)
    {
        newCamera = [self cameraWithPosition:AVCaptureDevicePositionFront];
    }
    else
    {
        newCamera = [self cameraWithPosition:AVCaptureDevicePositionBack];
    }


    newVideoInput = [[AVCaptureDeviceInput alloc] initWithDevice:newCamera error:&error];
    if(!newVideoInput || error)
    {
        NSLog(@"Error creating capture device input: %@", error.localizedDescription);
    }
    else
    {
        [self.captureSession addInput:newVideoInput];
        [self.captureSession addInput:self.audioInput];
        [self.captureSession addOutput:self.movieOutput];
        [self.captureSession addOutput:self.stillImageOutput];
    }

    [_captureSession commitConfiguration];
}
}

Почему кнопка не работает наоборот?

0 ответов

Другие вопросы по тегам