ios AVFoundation tippen, um zu fokussieren
Ich versuche, eine Kamera-app, die würde handeln wie die Standard-Kamera-app, mehr oder weniger.
Die Sache, die ist nicht für mich arbeiten, in dem moment, tap to focus. Ich möchte die Kamera zu konzentrieren und tun, was es tut, auf meine berührten Punkt, ebenso wie die eigentliche Kamera-app tut.
Hier mein viewDidLoad
- (void)viewDidLoad
{
[super viewDidLoad];
//Session
_session = [[AVCaptureSession alloc] init];
_session.sessionPreset = AVCaptureSessionPresetPhoto;
//Input
_videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
_videoInput = [AVCaptureDeviceInput deviceInputWithDevice:_videoDevice error:nil];
//Output
_frameOutput = [[AVCaptureVideoDataOutput alloc] init];
_frameOutput.videoSettings = [NSDictionary dictionaryWithObject:AVVideoCodecJPEG forKey:AVVideoCodecKey];
[_frameOutput setSampleBufferDelegate:self queue:dispatch_get_main_queue()];
[_session addInput:_videoInput];
[_session addOutput:_frameOutput];
[_session startRunning];
};
Und hier ist die Methode, die sollte meine Kamera Fokus Zeug auf klicken Sie auf.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[touches enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {
UITouch *touch = obj;
CGPoint touchPoint = [touch locationInView:touch.view];
focusLayer.frame = CGRectMake((touchPoint.x-25), (touchPoint.y-25), 50, 50);
if ([_videoDevice isFocusPointOfInterestSupported]) {
NSError *error;
if ([_videoDevice lockForConfiguration:&error]) {
[_videoDevice setFocusPointOfInterest:touchPoint];
[_videoDevice setExposurePointOfInterest:touchPoint];
[_videoDevice setFocusMode:AVCaptureFocusModeAutoFocus];
if ([_videoDevice isExposureModeSupported:AVCaptureExposureModeAutoExpose]){
[_videoDevice setExposureMode:AVCaptureExposureModeAutoExpose];
}
[_videoDevice unlockForConfiguration];
}
}
//NSLog(@"x = %f, y = %f", touchPoint.x, touchPoint.y);
}];
}
Nichts wirklich passiert, wenn ich auf dem Bildschirm klicken.
InformationsquelleAutor der Frage spacecash21 | 2012-10-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stellen Sie die touchPoint auf einen Bereich von [0,1] mit so etwas wie den folgenden code:
Die Dokumentation dazu finden Sie inApple - AV-Foundation-Programmier-Richtlinien - siehe Abschnitt Media Capturewo finden Sie Informationen über Fokus-Modi :
InformationsquelleAutor der Antwort Konrad Lang
und dann dies:
Swift-version:
InformationsquelleAutor der Antwort Catalin
Also hier ist, wie ich handle gesten für meine AV-Kamera-Vorschau. Richten Sie Ihre UITapGestureRecognizer ersten, dann bekommen Sie den Punkt, durch die Verwendung captureDevicePointOfInterestForPoint.
Ich bin mit AVCaptureVideoPreviewLayer, um die touch-Punkt. Aber wenn Sie GLKView zum Rendern der Vorschau statt AVCaptureVideoPreviewLayer, können Sie nicht den Punkt direkt, sondern müssen den Punkt als vorherigen Antwort habe.
Neuen coder für die ios-Entwicklung. Hoffe, dass dies helfen kann.
InformationsquelleAutor der Antwort Feng Liu