リモートワーク時代の三種の神器のひとつがリモートミーティング用のWebカメラです。今回はWebカメラとしてスマートフォンを使ってみましょう。
スマートフォンをWebカメラ化する「DroidCam」
リモートワークでは個々の勤務地が物理的に離れたところになるため、
電子メールや電子掲示板など文字中心のやりとりも、
どの手段も
今回紹介するのはそんなリモートワーク環境における三種の神器のひとつである
実際のところリモートのミーティングにおいては、
もちろん普通のWebカメラだけでなく、
しかしながらそんなご家庭にも、
スマートフォンをWebカメラ化するアプリケーションはたくさん存在します。基本はスマートフォン側にアプリケーションをインストールし、
DroidCamのスマートフォン向けアプリケーションはFLOSSではないものの、
さらに有償版のDroidCamXを購入すると、
スマートフォン側にアプリケーションをインストールする
まずはDroidCamをスマートフォンにインストールしましょう。といっても普通にアプリケーションをインストールするだけです。ここから先はAndroid版を想定して話を進めます。
起動するとまずはヘルプが表示されます。また写真と動画、
そうすると次のようなIPアドレスとURLを表示します。URLはDroidCamが、
気になるようなら画面右上のケバブメニュー
ちなみにケバブメニューの左にあるアイコンをクリックすると、
動作確認を兼ねて、/video
」/video
」

DroidCamはランドスケープモード
Ubuntuにクライアントをインストールする
スマートフォン側の準備ができたので、
v4l2loopbackのインストール
まずは仮想のWebカメラデバイスを作成するためのv4l2loopbackカーネルモジュールが必要です。このカーネルモジュールはアップストリームには取り込まれていないため、
まずはv4l2loopbackモジュールをインストールします。今回はモジュールだけインストールしていますが、
$ sudo apt install v4l2loopback-dkms (中略) v4l2loopback.ko: Running module version sanity check. - Original module - No original module exists within this kernel - Installation - Installing to /lib/modules/5.4.0-72-generic/updates/dkms/ depmod.... DKMS: install completed. man-db (2.9.1-1) のトリガを処理しています ...
まずはv4l2loopbackモジュールをロードしてみましょう。今回は特に何もオプションを指定していません。
$ sudo modprobe v4l2loopback
「/dev/
」
$ ls -l /sys/class/video4linux/ 合計 0 lrwxrwxrwx 1 root root 0 4月 25 12:10 video0 -> ../../devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/video4linux/video0 lrwxrwxrwx 1 root root 0 4月 25 12:10 video1 -> ../../devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/video4linux/video1 lrwxrwxrwx 1 root root 0 4月 25 12:10 video2 -> ../../devices/virtual/video4linux/video2
このモジュールはいくつかのオプションが存在します。
$ modinfo v4l2loopback filename: /lib/modules/5.4.0-72-generic/updates/dkms/v4l2loopback.ko license: GPL author: Vasily Levin, IOhannes m zmoelnig <zmoelnig@iem.at>,Stefan Diewald,Anton Novikovet al. description: V4L2 loopback video device srcversion: 095910A620FCC8E21E38880 depends: videodev retpoline: Y name: v4l2loopback vermagic: 5.4.0-72-generic SMP mod_unload modversions parm: debug:debugging level (higher values == more verbose) (int) parm: max_buffers:how many buffers should be allocated (int) parm: max_openers:how many users can open loopback device (int) parm: devices:how many devices should be created (int) parm: video_nr:video device numbers (-1=auto, 0=/dev/video0, etc.) (array of int) parm: card_label:card labels for every device (array of charp) parm: exclusive_caps:whether to announce OUTPUT/CAPTURE capabilities exclusively or not (array of bool) parm: max_width:maximum frame width (int) parm: max_height:maximum frame height (int)
よく使うオプションをいくつか紹介しましょう。
-
devices
-
仮想ビデオデバイスをいくつ作るかをいくつ作るかを指定します。たとえば
/dev/
まで存在する環境でvideo1 devices=3
を指定すると、/dev/
、video2 /dev/
、video3 /dev/
が作られます。video4 -
video_
nr -
ビデオデバイス番号を指定して作成します。たとえば
video_
と指定すると、nr=3,5,6 /dev/
、video3 /dev/
、video5 /dev/
が作られます。特定のデバイス名を特定の機能に紐づけたいときに便利です。video6 -
card_
label -
デバイスごとにアプリケーションから見える名前を指定します。たとえば
video_
と指定している状況で、nr=3,5 「 card_
」label="OBS","DroidCam" と指定すると、 アプリケーションからは /dev/
がvideo3 「OBS」 と、 /dev/
がvideo5 「DroidCam」 と表示されます。指定しない場合は、 「Dummy video device (0x0003)」 のように表示されます。 -
exclusive_
caps -
v4l2loopbackで作られたダミーデバイスは、
ioctl(VIDIOC_
に対して常にQUERYCAP) 「 V4L2_
」CAP_ VIDEO_ CAPTURE | V4L2_ CAP_ VIDEO_ OUTPUT を返します。それに対して exclusive_
に1を設定しておくと、caps デバイスごとのcapabilityを返すようになります。ChromeなどいくつかのWebカメラを使うソフトウェアは、 1を設定する必要があるようです。ちなみにLinuxクライアント版のZoomではなくても問題ありませんでした。
一度ロードしたモジュールをアンロードして、/dev/
を作るように、
$ sudo modprobe -r v4l2loopback $ cat <<EOF | sudo tee /etc/modprobe.d/v4l2loopback.conf options v4l2loopback video_nr=5 card_label="DroidCam" exclusive_caps=1 EOF $ echo "v4l2loopback" | sudo tee /etc/modules-load.d/v4l2loopback.conf $ sudo modprobe v4l2loopback $ cat /sys/module/v4l2loopback/parameters/video_nr 5,-1,-1,-1,-1,-1,-1,-1 $ cat /sys/module/v4l2loopback/parameters/exclusive_caps Y,N,N,N,N,N,N,N
また、video_
やexclusive_
が正しく設定されていることがわかります。ちなみにv4l2loopbackは、
DroidCamクライアントのインストール
次にDroidCamをインストールします。ソースコードは公開されているものの、
$ cd /tmp $ wget -O droidcam_latest.zip https://files.dev47apps.net/linux/droidcam_1.7.2.zip $ unzip droidcam_latest.zip -d droidcam $ cd droidcam
最新のバージョンは公式のドキュメントを参照してください。さらにインストールスクリプトを実行します。
$ sudo ./install-client
このinstall-client
」/opt
」/usr/
」
ここまででDroidCamのクライアントがインストールされました
DroidCamを使ってみる
Ubuntuから

「WiFi / LAN」

ものによっては左右や上下が逆転しているため、
無料版のDroidCamは解像度が640x480の4:3固定です。よって品質はそこまで期待できません。リモートミーティング用のカメラなのでそれでも大丈夫でしょう。有償版を購入すると1280x720
DroidCamクライアントの
「Wifi Server Mode」
これで急遽Webカメラが必要になった場合も、droidcam-cli
も用意されているため、
ちなみに、
$ sudo /opt/droidcam-uninstall