SDV Media:使用攝影機

SDV Media 可透過 Linux V4L2 API 使用攝影機。您可以直接使用 V4L2 API,但建議應用程式開發人員使用使用者空間輔助程式庫。例如:

  • Rust 的 libv4l-rs Crate (建議使用),
  • libv4l2 的 C++ 程式庫。SDV Media 不會預設提供這個程式庫。

支援的緩衝區模式

上游 V4L2 維護人員認為 USERPTR 緩衝區模式已遭淘汰,因此 SDV Media 不支援此模式。請改用 MMAPDMABUF 模式。

使用攝影機

虛擬機器管理程序公開的每個視訊裝置 (攝影機、編碼器和解碼器) 都會顯示為個別裝置,名稱為 /dev/videoN (N 為數值)。

應用程式可以使用 VIDIOC_QUERYCAP ioctl 查詢視訊裝置的功能。相機裝置會回報V4L2_CAP_VIDEO_CAPTUREV4L2_CAP_VIDEO_CAPTURE_MPLANE 的支援。

如要瞭解影片擷取流程的詳細資料,請參閱「Video for Linux API: Input/Output」。

請參考下列程式碼範例:

設定影片迴路裝置

如要進行測試,SDV Media 提供 v4l2loopback 核心模組,可用於完全在客體 VM 中模擬攝影機。根據預設,這會初始化單一虛擬攝影機裝置。如要新增更多,請透過核心指令列將設定參數傳遞至模組。舉例來說,如要初始化 4 個裝置,請新增:

v4l2loopback.devices=4

如要查看可用的模組選項完整清單,請參閱 Android 核心存放區中的 v4l2loopback README模組來源