2011-05-04 219 views
13

我正在尝试编写一个涉及前后摄像头并在它们之间切换的应用程序。据我了解,在addVideoInput方法,我必须要改变的ID在什么是前置摄像头的deviceUniqueID?

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

但其NSString的是那些ID?

或者,如果应该以其他方式完成,请提出建议。

谢谢你的帮忙!

回答

28

好吧,我已经设法找出解决方案。我不知道这是否是正确的还是错误的,它是从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; 
} 
0

可以通常得到使用

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

但是我宁愿使用你接受的方法 - 这一个是不安全的。