SKYDIV Desktop Clientで実装されている機能(Linuxでのカメラリダイレクト)の技術紹介です。
前回までのカメラ/オーディオリダイレクトの1回から3回の記事は主にWindowsに関する内容でしたが、4回目となる今回はLinuxでのカメラリダイレクトについてご紹介いたします。
前回の記事
SKYDIV Desktop ClientのLinux対応は仮想ブラウザ方式で、リモート接続先のブラウザでカメラを使用することが可能となっております。
Linuxでのカメラリダイレクトの流れ
全体像は下記のようになっております。
図中の①~⑤は2回目のカメラリダイレクトの説明と同様で、またキャプチャ処理や画像データの変換などの各工程も同じになります。
① 画像データのキャプチャ処理
② 画像データの変換・フレームデータを作成
③ フレームデータを送信
④ フレームデータを受信して仮想カメラにインプット
⑤ 仮想カメラからOSに対してフレームデータを返却
異なっているのは、図の中で④と⑤の間にDockerや仮想カメラデバイスの2つ目が登場している部分です。
この部分がLinux特有の部分となりますので、下記でご説明いたします。
Linuxでのカメラリダイレクトの詳細
Dockerとは
まず図中に登場するDockerについて簡単にご説明いたします。
Dockerは仮想のOSを実現するプラットフォームの一つで、SKYDIV Desktop ClientではVDI方式で使用しているHyper-Vに近い機能を持ちます。
特徴として、OSのすべてを仮想化するのではなく、ファイルシステムやプロセスなど一部の機能のみを仮想化し、それ以外はホストOSの機能をそのまま利用することで、仮想化によるオーバーヘッドが少ないメリットがあります。
Dockerでの仮想OSに当たるものはDockerコンテナと呼ばれており、図中での「リモート接続先」になります。
仮想カメラデバイスのマッピング
仮想カメラデバイスはDockerでは仮想化されず、ホストOSのデバイスが直接使用されます。
ただし、既定の状態では各DockerコンテナからホストOSのデバイスを使用することができず、Dockerコンテナにマッピングすることで初めて使用できるようになります。
2つの仮想カメラは実態が同じものですので、SKYDIVの仮想デバイス管理が仮想デバイスにフレームデータを渡すと、Dockerコンテナ内の仮想カメラデバイスに渡したのと同じことになり、ブラウザからフレームデータを取得することが可能になります。
複数のクライアントPCからカメラを使用する場合
複数のクライアントPCから同時にアクセスしカメラを使用した場合も、それぞれ別の仮想カメラデバイスが作成されDockerコンテナにマッピングされますので、他の方のカメラを利用することは出来ません。
2個の場合は下記の図のようになります。
まとめ
以上、Linuxでのカメラリダイレクトの仕組みをご紹介いたしました。
Linuxでのカメラリダイレクトは、仮想化プラットフォームがDockerであることが大きな違いとなっていましたが、Windowsでリダイレクトの基盤ができていたことでLinuxに特化した部分に注力できたと思います。
将来を見越した設計が重要だと感じる部分です。
最後に
全4回にわたってSKYDIV Desktop Clientのカメラ/オーディオリダイレクトについてご紹介いたしました。
第1回 SKYDIV独自方式でのリダイレクトについて
第2回 カメラリダイレクトについて
第3回 オーディオリダイレクトについて
第4回 Linuxでのカメラリダイレクトについて
皆様の参考になれば幸いです。
最後まで読んでいただきありがとうございました。