我正在尝试编写一个涉及前后摄像头并在它们之间切换的应用程序。据我了解,在addVideoInput方法,我必须要改变的ID在什么是前置摄像头的deviceUniqueID?
AVCaptureDevice *videoDevice = [AVCaptureDevice deviceWithUniqueID:(NSString *)deviceUniqueID];
但其NSString的是那些ID?
或者,如果应该以其他方式完成,请提出建议。
谢谢你的帮忙!
我正在尝试编写一个涉及前后摄像头并在它们之间切换的应用程序。据我了解,在addVideoInput方法,我必须要改变的ID在什么是前置摄像头的deviceUniqueID?
AVCaptureDevice *videoDevice = [AVCaptureDevice deviceWithUniqueID:(NSString *)deviceUniqueID];
但其NSString的是那些ID?
或者,如果应该以其他方式完成,请提出建议。
谢谢你的帮忙!
好吧,我已经设法找出解决方案。我不知道这是否是正确的还是错误的,它是从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;
}
可以通常得到使用
前方照相机AVCaptureDevice *frontalCamera = [AVCaptureDevice deviceWithUniqueID:@"com.apple.avfoundation.avcapturedevice.built-in_video:1"];
但是我宁愿使用你接受的方法 - 这一个是不安全的。