Latenz mit Zero-Shutter-Lag reduzieren

Ab CameraX 1.2 ist der Modus „Null-Verschlussverzögerung“ als Aufnahmemodus verfügbar. Aktivieren Sie die Funktion „Null-Verschlussverzögerung“, um die Latenz im Vergleich zum Standardaufnahmemodus deutlich zu reduzieren. So verpassen Sie nie wieder den perfekten Moment.

Zero-Shutter-Lag aktivieren

Wenn Sie die Funktion „Zero-Shutter-Lag“ aktivieren möchten, übergeben Sie CAPTURE_MODE_ZERO_SHOT_LAG an ImageCapture.Builder.setCaptureMode(). Andernfalls wird setCaptureMode() auf CAPTURE_MODE_MINIMIZE_LATENCY zurückgesetzt.

Weitere Informationen zu Aufnahmemodi finden Sie im Leitfaden zur Bildaufnahme.

Funktionsweise

Bei der Funktion „Null-Verschlussverzögerung“ wird ein Ringbuffer verwendet, in dem die drei letzten Aufnahmeframes gespeichert werden. Wenn ein Nutzer die Aufnahmetaste drückt, ruft CameraX takePicture() auf und der Ringbuffer ruft den aufgenommenen Frame mit dem Zeitstempel ab, der dem der Tastenbetätigung am nächsten ist. CameraX verarbeitet die Aufnahmesitzung dann noch einmal, um ein Bild aus diesem Frame zu generieren, das im JPEG-Format auf dem Laufwerk gespeichert wird.

Voraussetzungen

Bevor Sie die Funktion „Null-Verschlussverzögerung“ aktivieren, prüfen Sie unter isZslSupported(), ob Ihr Gerät die folgenden Anforderungen erfüllt:

  • Die App ist auf Android 6.0 und höher (API-Level 23 und höher) ausgerichtet.
  • Unterstützt die erneute Verarbeitung von PRIVATE.

Bei Geräten, die die Mindestanforderungen nicht erfüllen, greift CameraX auf CAPTURE_MODE_MINIMIZE_LATENCY zurück.

Der Verschluss ohne Verzögerung ist nur für die Bildaufnahme verfügbar. Sie können sie nicht für die Videoaufzeichnung oder mit Kameraerweiterungen aktivieren.

Da die Verwendung des Blitzes zu einer höheren Latenz führt, funktioniert die Funktion „Null-Verschlussverzögerung“ nicht, wenn der Blitz eingeschaltet ist oder sich im Modus „AUTO“ befindet. Weitere Informationen zum Festlegen des Blitzmodus finden Sie unter setFlashMode().