Ich versuche, eine einfache Ansicht in meine iPhone-Anwendung einzubetten, um schnelle Schnappschüsse zu machen. Alles funktioniert gut, aber ich habe einige Probleme mit der Startzeit der Kameras. In einem Apple-Beispielprojekt wird AVCaptureSessions -startRunning
nicht auf dem Hauptthread ausgeführt, was notwendig scheint. Ich richte die Capture-Sitzung während der Initialisierung der Ansicht ein und starte sie in einem separaten Thread. Jetzt füge ich die AVCaptureVideoPreviewLayer
in -didMoveToSuperview
hinzu. Alles ist in Ordnung, ohne Multithreading (die Benutzeroberfläche ist für etwa eine Sekunde blockiert), aber mit GCD funktioniert die Benutzeroberfläche manchmal, manchmal dauert es viel zu lange für die Benutzeroberfläche "zu entfrieren" oder die Vorschau angezeigt werden.Wie verhindert man die Blockierung der Benutzeroberfläche bei der Verwendung der iPhone-Kamera über AVFoundation?
Wie kann ich mit der Startverzögerung der Kamera zuverlässig umgehen, ohne den Haupt-Thread zu blockieren (die Verzögerung selbst ist nicht das Problem)?
Ich hoffe, ihr mein Problem verstehen: D
Vielen Dank im Voraus!
BTW: Hier ist meine Proof-of-Concept-Projekt (ohne GCD) ich jetzt für eine andere App bin Wiederverwendung: http://github.com/dariolass/QuickShotView
Danke! Der Schlüssel für mich war, 'AVCaptureSession's' startRunning' und 'stopRunning' auf einem Hintergrund-Thread auszuführen. – the4kman