2013-01-20 4 views
8

Ich habe ein Programm, um ein Video mit Standard-Parametern aufzunehmen, und die Belichtung, der Fokus und der Weißabgleich werden automatisch angepasst, wenn ich die Kamera bewege. Ich möchte 2 Tasten im Programm hinzufügen: LOCK und PRESET. Wenn die LOCK-Taste gedrückt wird, werden Belichtung, Fokus und Weißabgleich fixiert und ihre Werte werden als Benutzereinstellungen gespeichert. Mit der PRESET-Taste stellen Sie die Benutzereinstellungen für die Kamera ein, um sicherzustellen, dass alle Videos mit denselben Belichtungs-, Fokus- und Weißabgleichswerten aufgenommen werden können.Wie können Belichtung, Fokus und Weißabgleich für die Videoaufnahme festgelegt werden?

Der Lockteil ist einfach, ich muss nur den Modus ändern, also würde ich gerne wissen, ob es irgendeinen Weg gibt, um Werte für Belichtung, Fokus und Weißabgleich zu bekommen und einzustellen.

Nehmen Sie Belichtung zum Beispiel, der exposureMode ist auf AVCaptureExposureModeContinuousAutoExposure eingestellt, das heißt, wenn ich das iPhone für ein Video halte, wird die Belichtung automatisch angepasst, um sicherzustellen, dass wir die Szene deutlich in hell oder dunkel sehen können dunkle Umgebung.

AVCaptureDevice* pCaptureDevice = [self videoDeviceWithPosition:AVCaptureDevicePositionBack]; 
[pCaptureDevice lockForConfiguration:nil]; 
[pCaptureDevice setExposureMode:AVCaptureExposureModeContinuousAutoExposure]; 
[pCaptureDevice unlockForConfiguration]; 

Wenn die LOCK-Taste gedrückt wird, ändert man die exposure zu AVCaptureExposureModeLocked, so der aktuelle Belichtungswert wird nicht mehr verändert werden.

[pCaptureDevice lockForConfiguration:nil]; 
[pCaptureDevice setExposureMode:AVCaptureExposureModeLocked]; 
[pCaptureDevice unlockForConfiguration]; 

jedoch, wie kann ich den Belichtungswert zu diesem Zeitpunkt erhalten, wenn die Taste gedrückt wird? Und noch wichtiger: Wie kann ich den Belichtungswert beim Drücken von PRESET auf AVCaptureDevice zurücksetzen?

Ich habe im Forum gesucht und nur Michael Grinichs Beitrag gefunden: Accessing iOS 6 new APIs for camera exposure and shutter speed. Ich folgte seinem Fund und versuchte, die privaten APIs zu verwenden, um exposureGain und exposureDuration zu erhalten und einzustellen, aber im AVCaptureExposureModeContinuousAutoExposure Modus änderten sich diese 2 Werte nie, wenn ich die Kamera von der dunklen in die helle Umgebung bewege (exposureGain = 1.0 und exposureDuration = {1, 30, 1, 0}). Und die Einstellung hat die Belichtung überhaupt nicht verändert.

Könnte jemand mir helfen, dieses Problem zu lösen? Vielen Dank im Voraus!

+0

haben Sie etwas dazu herausgefunden? Ich kämpfe auch durch die gleiche Sache. –

+0

Haben Sie Erfolg gehabt? –

Antwort

1

Ich habe eine Antwort hinzugefügt, die Ihnen unter Accessing iOS 6 new APIs for camera exposure and shutter speed helfen könnte. Ich kann hier ein wenig mehr Details hinzufügen ...

Die manuelle Einstellung des Fokus folgt genau der gleichen Struktur, die ich für die Belichtung definiert habe. Das heißt:

#define AVCaptureFocusModeManual  3 
NSError* error = nil; 
if ([captureDevice lockForConfiguration:&error]) { 
    captureDevice.manualFocusSupportEnabled = YES; 
    if ([captureDevice isFocusModeSupported:AVCaptureFocusModeManual]) { 
     captureDevice.focusMode = AVCaptureFocusModeManual; 
     // this is a value [0..1] 
     captureDevice.focusPosition = ...; 
    } 
    [captureDevice unlockForConfiguration]; 
} 

Der Weißabgleich scheint nicht einen speziellen Modus die Möglichkeit, Belichtung und Fokus zu tun haben. Stellen Sie den WhiteBalanceMode zu verschlossen, aber ansonsten scheint es, dass Sie nur die Farbtemperatur einstellen:

// this is also a value [0..1] 
captureDevice.whiteBalanceTemperature = ...; 
Verwandte Themen