Die Mac OS X-Anwendung, die ich gerade programmiere, nimmt eine Fotoaufnahme mit der integrierten macbook-Facetime-Kamera vor.
Auf MacBookAir3,2, MacBookPro8,2 und MacBookPro10,2 funktioniert es gut, aber auf neuen Macbooks dauert es "dunkle" Fotos. Ich verstehe, dass es wegen der automatischen Belichtung ist, aber ich habe Schwierigkeiten, es zum Funktionieren zu bringen. Der AVCaptureDevice
adjustingExposure
ist auf NO
eingestellt, aber das aufgenommene Foto ist immer noch vollständig dunkel.
Der Code: setupCamera
wird einmal beim App-Start aufgerufen
... dann wird durch Klicken auf die Schaltfläche in der Benutzeroberfläche die Funktion shootPhoto
aufgerufen:
Die Idee besteht darin, zu überprüfen, ob das Kameragerät Fokus, Belichtung oder Weißabgleich justiert. Wenn nicht, rufe actuallyCapture
gleich an. Wenn es sich anpasst - füge Beobachter hinzu und rufe actuallyCapture
von observeValueForKeyPath
auf.
Das Problem ist, dass die Aufrufe addObserver
niemals aufgerufen werden, weil das Gerät alle adjustingX==NO
zurückgibt - aber das aufgenommene Foto ist immer noch dunkel.
Was könnte der Grund sein? Warte ich auf Weißabgleich und Belichtungseinstellungen richtig?
Es ist schwer für mich zu debuggen, weil ich nur die Geräte besitze, die gut funktionieren.
Ich habe es geschafft, dieses Problem selbst zu lösen. Hier ist, wie ich das gemacht habe:
Setzen Sie Beobachter für adjustingExposure
, adjustingFocus
und adjustingWhiteBalance
:
Um ein Foto aufzunehmen, initialisiere ein AVCaptureSession
, setze aber einen 1s-Verzögerungstimer und fange tatsächlich ein, nachdem es ausgelöst wurde:
Überprüfen Sie in der observeValueForKeyPath:ofObject:change:context
, ob alle drei Einstellungen bereits durchgeführt wurden. Wenn dies der Fall ist, brechen Sie den oben eingestellten Timer ab und schießen Sie das Foto:
Tags und Links macos avcapturesession avcapturedevice adjustment facetime