SDV Media memungkinkan penggunaan kamera video melalui Linux V4L2 API. Anda dapat menggunakan V4L2 API secara langsung, tetapi developer aplikasi sebaiknya menggunakan library helper ruang pengguna. Contoh:
libv4l-rscrate untuk Rust (direkomendasikan),libv4l2untuk C++. Library ini tidak disediakan secara default di SDV Media.
Mode buffer yang didukung
Mode buffer USERPTR dianggap tidak digunakan lagi oleh pemelihara V4L2 upstream dan oleh karena itu tidak didukung oleh SDV Media. Sebagai gantinya, gunakan mode MMAP atau DMABUF.
Menggunakan kamera
Setiap perangkat video (kamera, encoder, dan decoder) yang diekspos oleh hypervisor akan muncul sebagai perangkat terpisah yang diberi nama /dev/videoN (dengan nilai numerik N).
Aplikasi dapat menggunakan VIDIOC_QUERYCAP ioctl untuk mengkueri kemampuan
perangkat video. Perangkat kamera melaporkan dukungan untuk V4L2_CAP_VIDEO_CAPTURE
atau V4L2_CAP_VIDEO_CAPTURE_MPLANE.
Untuk mengetahui detail alur pengambilan video, lihat Video untuk Linux API: Input/Output.
Pertimbangkan contoh kode ini:
- Rust:
libv4l-rsstream_capture_mmapcontoh, - C/C++: Class
VideoCaptureAAOS atau contoh Pengambilan Video kernel Linux.
Mengonfigurasi perangkat loopback video
Untuk pengujian, SDV Media menyediakan modul kernel v4l2loopback, yang dapat digunakan untuk mengemulasi kamera video sepenuhnya dalam VM tamu. Secara default, modul ini menginisialisasi satu perangkat kamera virtual. Untuk menambahkan lebih banyak, teruskan parameter konfigurasi ke modul melalui command line kernel. Misalnya, untuk menginisialisasi 4 perangkat, tambahkan:
v4l2loopback.devices=4
Untuk melihat daftar lengkap opsi modul yang tersedia, lihat README v4l2loopback atau sumber modul di repositori kernel Android.