SDV Media: Используйте камеры

SDV Media позволяет использовать видеокамеры через API Linux V4L2 . Можно использовать API V4L2 напрямую, но разработчикам приложений рекомендуется использовать вспомогательные библиотеки пользовательского пространства. Например:

  • библиотека libv4l-rs для Rust (рекомендуется),
  • libv4l2 для C++. Эта библиотека не входит в стандартную комплектацию SDV Media.

Поддерживаемые режимы буферизации

Режим буферизации USERPTR считается устаревшим разработчиками V4L2 и поэтому не поддерживается SDV Media. Вместо него используйте режимы MMAP или DMABUF .

Используйте камеры

Каждое видеоустройство (камеры, кодеры и декодеры), предоставляемое гипервизором, будет отображаться как отдельное устройство с именем /dev/videoN (с числовым значением N).

Приложения могут использовать ioctl VIDIOC_QUERYCAP для запроса возможностей видеоустройств. Камеры сообщают о поддержке V4L2_CAP_VIDEO_CAPTURE или V4L2_CAP_VIDEO_CAPTURE_MPLANE .

Подробную информацию о процессе захвата видео см. в разделе Video for Linux API: Input/Output .

Рассмотрим следующие примеры кода:

Настройка устройств обратной связи для видео.

Для тестирования SDV Media предоставляет модуль ядра v4l2loopback , который можно использовать для эмуляции видеокамер полностью внутри гостевой виртуальной машины. По умолчанию он инициализирует одно виртуальное устройство камеры. Чтобы добавить больше, передайте параметры конфигурации модулю через командную строку ядра. Например, чтобы инициализировать 4 устройства, добавьте:

v4l2loopback.devices=4

Полный список доступных параметров модуля можно найти в файле README модуля v4l2loopback или в исходном коде модуля в репозитории ядра Android.