SDV Media permet d'utiliser des caméras vidéo via l'API Linux V4L2. Il est possible d'utiliser directement les API V4L2, mais les développeurs d'applications sont encouragés à utiliser des bibliothèques d'assistance de l'espace utilisateur. Exemple :
- Caisse
libv4l-rspour Rust (recommandée) libv4l2pour C++. Cette bibliothèque n'est pas fournie par défaut dans SDV Media.
Modes de mise en mémoire tampon compatibles
Le mode tampon USERPTR est considéré comme obsolète par les responsables de V4L2 en amont et n'est donc pas compatible avec SDV Media. Utilisez plutôt le mode MMAP ou DMABUF.
Utiliser les caméras
Chaque périphérique vidéo (caméras, encodeurs et décodeurs) exposé par l'hyperviseur apparaît sous la forme d'un périphérique distinct nommé /dev/videoN (avec une valeur numérique N).
Les applications peuvent utiliser VIDIOC_QUERYCAP ioctl pour interroger les capacités des périphériques vidéo. Les périphériques de caméras signalent la compatibilité avec V4L2_CAP_VIDEO_CAPTURE ou V4L2_CAP_VIDEO_CAPTURE_MPLANE.
Pour en savoir plus sur le flux de capture vidéo, consultez Video for Linux API: Input/Output.
Considérez ces exemples de code :
- Rust :
libv4l-rsstream_capture_mmapexample, - C/C++ : classe
VideoCaptureAAOS ou exemple de capture vidéo du kernel Linux.
Configurer les périphériques de rebouclage vidéo
Pour les tests, SDV Media fournit un module de noyau v4l2loopback, qui peut être utilisé pour émuler des caméras vidéo entièrement dans la VM invitée. Par défaut, il initialise un seul périphérique de caméra virtuelle. Pour en ajouter, transmettez les paramètres de configuration au module via la ligne de commande du noyau. Par exemple, pour initialiser quatre appareils, ajoutez :
v4l2loopback.devices=4
Pour obtenir la liste complète des options de module disponibles, consultez le fichier README de v4l2loopback ou les sources du module dans le dépôt du noyau Android.