SDV Media: Sử dụng camera

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-rs thùng cho Rust (nên dùng),
  • libv4l2 cho 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:

Đị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.