SDV Media: Kameras verwenden

SDV Media ermöglicht die Verwendung von Videokameras über die Linux V4L2 API. Es ist möglich, die V4L2 APIs direkt zu verwenden, aber Anwendungsentwickler sollten Helper-Bibliotheken im Userspace verwenden. Beispiel:

  • libv4l-rs -Crate für Rust (empfohlen)
  • libv4l2 für C++. Diese Bibliothek wird in SDV Media nicht standardmäßig bereitgestellt.

Unterstützte Puffermodi

Der USERPTR-Puffermodus gilt bei den Upstream-V4L2-Maintainern als veraltet und wird daher von SDV Media nicht unterstützt. Verwenden Sie stattdessen den MMAP- oder DMABUF-Modus.

Kameras verwenden

Jedes vom Hypervisor bereitgestellte Videogerät (Kameras, Encoder und Decoder) wird als separates Gerät mit dem Namen /dev/videoN angezeigt (mit einem numerischen Wert für N).

Anwendungen können VIDIOC_QUERYCAP ioctl verwenden, um die Funktionen der Videogeräte abzufragen. Kamerageräten melden die Unterstützung für V4L2_CAP_VIDEO_CAPTURE oder V4L2_CAP_VIDEO_CAPTURE_MPLANE.

Weitere Informationen zum Videoaufnahmefluss finden Sie unter Video for Linux API: Input/Output.

Beachten Sie diese Codebeispiele:

Video-Loopback-Geräte konfigurieren

Für Tests bietet SDV Media ein v4l2loopback-Kernelmodul, mit dem Videokameras vollständig in der Gast-VM emuliert werden können. Standardmäßig wird ein einzelnes virtuelles Kameragerät initialisiert. Wenn Sie weitere hinzufügen möchten, übergeben Sie die Konfigurationsparameter über die Kernel-Befehlszeile an das Modul. Wenn Sie beispielsweise vier Geräte initialisieren möchten, fügen Sie Folgendes hinzu:

v4l2loopback.devices=4

Eine vollständige Liste der verfügbaren Moduloptionen finden Sie in der README-Datei von v4l2loopback oder in den Modulquellen im Android-Kernel Repository.