SDV Media では、Linux V4L2 API を介してビデオカメラを使用できます。V4L2 API を直接使用することもできますが、アプリケーション デベロッパーはユーザースペース ヘルパー ライブラリを使用することをおすすめします。例:
サポートされているバッファモード
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 をご覧ください。
次のコードサンプルを検討してください。
- Rust:
libv4l-rsstream_capture_mmapの例 - C/C++: AAOS
VideoCaptureクラスまたは Linux カーネルの動画キャプチャ の例。
動画ループバック デバイスを構成する
テスト用に、SDV Media には v4l2loopback カーネル モジュールが用意されています。このモジュールを使用すると、ゲスト VM 内でビデオカメラを完全にエミュレートできます。デフォルトでは、単一の仮想カメラ デバイスが初期化されます。追加するには、カーネル コマンドラインを使用して構成パラメータをモジュールに渡します。たとえば、4 つのデバイスを初期化するには、次のように追加します。
v4l2loopback.devices=4
使用可能なモジュール オプションの全リストについては、 v4l2loopback README または Android カーネル リポジトリのモジュール ソースをご覧ください。