2011-05-04 10 views
13

Estoy tratando de escribir una aplicación que involucre tanto la cámara frontal como la trasera y el cambio entre ellas. Por lo que yo entiendo, en el método addVideoInput, tengo que cambiar los ID de¿Cuál es el dispositivo de la cámara frontalUniqueID?

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

Pero lo que NSStrings son aquellas identificaciones?

O, si se debe hacer de otra manera, por favor, dar una sugerencia.

¡Gracias por la ayuda!

Respuesta

28

Ok, he logrado encontrar una solución. No sé si es bueno o malo, que fue tomado de http://www.bunnyhero.org/2010/08/15/turn-your-iphone-into-a-vampire-with-avfoundation-and-ios-4/

Sólo tiene que utilizar

AVCaptureDevice *captureDevice = [self frontFacingCameraIfAvailable]; 

donde frontFacingCameraIfAvailable es:

-(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; 
} 
0

Puede generalmente conseguir la cámara frontal usando

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

Pero Por supuesto, preferiría usar su método aceptado, este no es seguro en absoluto.

Cuestiones relacionadas