在 ios 中获取当前的自动对焦系统时崩溃
Crash while getting the current Autofocus system in ios
iphone6 介绍中有两种类型的焦点检测,
1.对比检测
2.相位检测
从iphone 6.6+开始使用相位检测。
我正在尝试获取当前的焦点系统
self.format = [[AVCaptureDeviceFormat alloc] init];
[self.currentDevice setActiveFormat:self.format];
AVCaptureAutoFocusSystem currentSystem = [self.format autoFocusSystem];
if (currentSystem == AVCaptureAutoFocusSystemPhaseDetection)
{
[self.currentDevice addObserver:self forKeyPath:@"lensPosition" options:NSKeyValueObservingOptionNew context:nil];
}
else if(currentSystem == AVCaptureAutoFocusSystemContrastDetection)
{
[self.currentDevice addObserver:self forKeyPath:@"adjustingFocus" options:NSKeyValueObservingOptionNew context:nil];
}
else{
NSLog(@"No observers added");
}
但现在它在下一行崩溃
AVCaptureAutoFocusSystem currentSystem = [self.format autoFocusSystem];
我找不到正确的崩溃描述。
您正在创建一些“AVCaptureDeviceFormat
”,但默认情况下实际上没有设置任何内容。这只是无法使用的垃圾(这就是您崩溃的原因)。
每个捕获设备都可以使用一种或两种格式。
您可以通过执行以下操作来查看它们:
for (AVCaptureDeviceFormat *format in [self.currentDevice formats]) {
CFStringRef formatName = CMFormatDescriptionGetExtension([format formatDescription], kCMFormatDescriptionExtension_FormatName);
NSLog(@"format name is %@", (NSString *)formatName);
}
您应该做的是决定您要使用哪个 AVCaptureDevice(例如前置摄像头、后置摄像头等),从 获取格式那个,然后设置[self.currentDevice setActiveFormat:self.format]
”。
WWDC 2013 session "What's New in Camera Capture" 视频提供了有关如何执行此操作的更多信息。
iphone6 介绍中有两种类型的焦点检测, 1.对比检测 2.相位检测
从iphone 6.6+开始使用相位检测。
我正在尝试获取当前的焦点系统
self.format = [[AVCaptureDeviceFormat alloc] init];
[self.currentDevice setActiveFormat:self.format];
AVCaptureAutoFocusSystem currentSystem = [self.format autoFocusSystem];
if (currentSystem == AVCaptureAutoFocusSystemPhaseDetection)
{
[self.currentDevice addObserver:self forKeyPath:@"lensPosition" options:NSKeyValueObservingOptionNew context:nil];
}
else if(currentSystem == AVCaptureAutoFocusSystemContrastDetection)
{
[self.currentDevice addObserver:self forKeyPath:@"adjustingFocus" options:NSKeyValueObservingOptionNew context:nil];
}
else{
NSLog(@"No observers added");
}
但现在它在下一行崩溃
AVCaptureAutoFocusSystem currentSystem = [self.format autoFocusSystem];
我找不到正确的崩溃描述。
您正在创建一些“AVCaptureDeviceFormat
”,但默认情况下实际上没有设置任何内容。这只是无法使用的垃圾(这就是您崩溃的原因)。
每个捕获设备都可以使用一种或两种格式。
您可以通过执行以下操作来查看它们:
for (AVCaptureDeviceFormat *format in [self.currentDevice formats]) {
CFStringRef formatName = CMFormatDescriptionGetExtension([format formatDescription], kCMFormatDescriptionExtension_FormatName);
NSLog(@"format name is %@", (NSString *)formatName);
}
您应该做的是决定您要使用哪个 AVCaptureDevice(例如前置摄像头、后置摄像头等),从 获取格式那个,然后设置[self.currentDevice setActiveFormat:self.format]
”。
WWDC 2013 session "What's New in Camera Capture" 视频提供了有关如何执行此操作的更多信息。