SDV メディア: カメラを使用する

SDV Media では、Linux V4L2 API を介してビデオカメラを使用できます。V4L2 API を直接使用することもできますが、アプリケーション デベロッパーはユーザースペース ヘルパー ライブラリを使用することをおすすめします。例:

  • libv4l-rs Rust 用のクレート(推奨)
  • libv4l2 C++ 用。このライブラリは、SDV Media ではデフォルトで提供されていません not

サポートされているバッファモード

USERPTR バッファモードは、アップストリーム V4L2 メンテナーによって非推奨とされているため、 SDV Media ではサポートされていません。代わりに MMAP モードまたは DMABUF モードを使用してください 。

カメラを使用する

ハイパーバイザによって公開される各ビデオ デバイス(カメラ、エンコーダ、デコーダ)は、/dev/videoN という名前の個別のデバイスとして表示されます(N は数値)。

アプリケーションは、VIDIOC_QUERYCAP ioctl を使用して ビデオ デバイスの性能を照会できます。カメラ デバイスは サポートを報告しますV4L2_CAP_VIDEO_CAPTURE または V4L2_CAP_VIDEO_CAPTURE_MPLANE

動画キャプチャ フローの詳細については、 Video for Linux API: Input/Output をご覧ください。

次のコードサンプルを検討してください。

動画ループバック デバイスを構成する

テスト用に、SDV Media には v4l2loopback カーネル モジュールが用意されています。このモジュールを使用すると、ゲスト VM 内でビデオカメラを完全にエミュレートできます。デフォルトでは、単一の仮想カメラ デバイスが初期化されます。追加するには、カーネル コマンドラインを使用して構成パラメータをモジュールに渡します。たとえば、4 つのデバイスを初期化するには、次のように追加します。

v4l2loopback.devices=4

使用可能なモジュール オプションの全リストについては、 v4l2loopback README または Android カーネル リポジトリのモジュール ソースをご覧ください。