Что такое устройство передней камеры?

Я пытаюсь написать приложение, которое включает в себя как переднюю, так и заднюю камеру и переключение между ними. Насколько я понимаю, в методе addVideoInput мне нужно изменить идентификаторы в

    AVCaptureDevice *videoDevice = [AVCaptureDevice deviceWithUniqueID:(NSString *)deviceUniqueID];

Но какие NSStrings являются этими идентификаторами?

Или, если это нужно сделать по-другому, просьба дать предложение.

Благодарим вас за помощь!

Ответы

Ответ 1

Хорошо, мне удалось найти решение. Я не знаю, правильно это или нет, это было взято из http://www.bunnyhero.org/2010/08/15/turn-your-iphone-into-a-vampire-with-avfoundation-and-ios-4/

Просто используйте

AVCaptureDevice *captureDevice = [self frontFacingCameraIfAvailable];

где frontFacingCameraIfAvailable:

-(AVCaptureDevice *)frontFacingCameraIfAvailable
{
    NSArray *videoDevices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
    AVCaptureDevice *captureDevice = nil;
    for (AVCaptureDevice *device in videoDevices)
    {
        if (device.position == AVCaptureDevicePositionFront)
        {
            captureDevice = device;
            break;
        }
    }

    //  couldn't find one on the front, so just get the default video device.
    if ( ! captureDevice)
    {
        captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    }

    return captureDevice;
}

Ответ 2

Обычно вы можете получить лобовую камеру с помощью

AVCaptureDevice *frontalCamera = [AVCaptureDevice deviceWithUniqueID:@"com.apple.avfoundation.avcapturedevice.built-in_video:1"];

Но я бы, во что бы то ни стало, использовал ваш принятый метод - этот вообще не безопасен.