SDV Media umożliwia korzystanie z kamer wideo za pomocą interfejsu Linux V4L2 API. Można korzystać bezpośrednio z interfejsów V4L2 API, ale deweloperom aplikacji zalecamy używanie bibliotek pomocniczych w przestrzeni użytkownika. Przykład:
libv4l-rspakiet dla języka Rust (zalecany),libv4l2dla języka C++. Ta biblioteka nie jest domyślnie dostępna w SDV Media.
Obsługiwane tryby buforowania
Tryb buforowania USERPTR jest uważany za przestarzały przez opiekunów V4L2 i dlatego nie jest obsługiwany przez SDV Media. Zamiast tego użyj trybu MMAP lub DMABUF.
Korzystanie z kamer
Każde urządzenie wideo (kamery, kodery i dekodery) udostępniane przez hiperwizor będzie wyświetlane jako osobne urządzenie o nazwie /dev/videoN (gdzie N to wartość liczbowa).
Aplikacje mogą używać VIDIOC_QUERYCAP ioctl do sprawdzania możliwości
urządzeń wideo. Urządzenia kamery zgłaszają obsługę dla V4L2_CAP_VIDEO_CAPTURE
lub V4L2_CAP_VIDEO_CAPTURE_MPLANE.
Szczegółowe informacje o procesie przechwytywania wideo znajdziesz w artykule Video for Linux API: Input/Output.
Zapoznaj się z tymi przykładami kodu:
- Rust:
libv4l-rsprzykładstream_capture_mmap, - C/C++: klasa
VideoCapturew AAOS lub przykład przechwytywania wideo w jądrze systemu Linux.
Konfigurowanie urządzeń sprzężenia zwrotnego wideo
Do testowania SDV Media udostępnia moduł jądra v4l2loopback, którego można używać do emulowania kamer wideo w całości w maszynie wirtualnej gościa. Domyślnie inicjuje on jedno wirtualne urządzenie kamery. Aby dodać więcej, przekaż parametry konfiguracji do modułu za pomocą wiersza poleceń jądra. Aby na przykład zainicjować 4 urządzenia, dodaj:
v4l2loopback.devices=4
Pełną listę dostępnych opcji modułu znajdziesz w pliku README v4l2loopback lub w źródłach modułu w repozytorium jądra Androida.