SDV Media cho phép sử dụng camera video thông qua API Linux V4L2. Bạn có thể sử dụng trực tiếp các API V4L2, nhưng nhà phát triển ứng dụng nên sử dụng các thư viện trợ giúp không gian người dùng. Ví dụ:
libv4l-rsthùng cho Rust (nên dùng),libv4l2cho C++. Thư viện này không được cung cấp theo mặc định trong SDV Media.
Các chế độ bộ đệm được hỗ trợ
Chế độ bộ đệm USERPTR được coi là không dùng nữa bởi những người duy trì V4L2 ở thượng nguồn và do đó không được SDV Media hỗ trợ. Thay vào đó, hãy sử dụng chế độ MMAP hoặc DMABUF.
Sử dụng camera
Mỗi thiết bị video (camera, bộ mã hoá và bộ giải mã) do trình điều khiển ảo hoá hiển thị sẽ xuất hiện dưới dạng một thiết bị riêng biệt có tên là /dev/videoN (với giá trị số là N).
Các ứng dụng có thể sử dụng VIDIOC_QUERYCAP ioctl để truy vấn các tính năng của
thiết bị video. Các thiết bị camera báo cáo hỗ trợ cho V4L2_CAP_VIDEO_CAPTURE
hoặc V4L2_CAP_VIDEO_CAPTURE_MPLANE.
Để biết thông tin chi tiết về quy trình quay video, hãy xem API Video cho Linux: Đầu vào/Đầu ra.
Hãy xem các mẫu mã sau:
- Rust:
libv4l-rsstream_capture_mmapví dụ - C/C++: Lớp
VideoCaptureVideoCapture AAOS hoặc ví dụ về Quay video trong kernel Linux.
Định cấu hình thiết bị video loopback
Để kiểm thử, SDV Media cung cấp một mô-đun kernel v4l2loopback, có thể dùng để mô phỏng hoàn toàn camera video trong VM khách. Theo mặc định, mô-đun này sẽ khởi chạy một thiết bị camera ảo. Để thêm nhiều thiết bị hơn, hãy truyền các tham số cấu hình vào mô-đun thông qua dòng lệnh kernel. Ví dụ: để khởi chạy 4 thiết bị, hãy thêm:
v4l2loopback.devices=4
Để xem danh sách đầy đủ các tuỳ chọn mô-đun hiện có, hãy xem tệp README v4l2loopback hoặc các nguồn mô-đun trong kho lưu trữ kernel Android.