2021-02-13(土)に小江戸らぐ 2月のオフな集まり(第223回)に参加しました.開催はZoom.usを利用したオンライン開催で参加者は20人ほどでした.
次のような発表がありました.
- Puppy Slacko 7.0を日本語化してみた
- 古いMac miniにDebian/sidを入れてみた
- LUnixはじめました3「Fuzixを起動する」
- MAMORIOを改造する
- エンジニアがBOOTHのサイトを作ってみた
- DroidCamでもスマホをWebCamにする
- 今更Anthyを試してみた
- へんな液晶で苦労する話
- gPhoto2でカメラ制御
次回の開催は03/13(土)でオンライン開催です.
以下はその時発表したスライドをhtmlで書き出したものです.
DroidCamでもスマホをWebCamにする
USB port死にかけ?
- スマホや2.5インチHDDを繋ぐと勝手に切れてしまう
- スマホは数秒毎に充電ランプが付いたり消えたり
- Webcamがビデオチャット中に使えなくなったり
- 自己給電の3.5インチHDDは調子がいいような?
- しばらく放置したり再起動すると直ったり?
- USB周りのリセッタブルヒューズとかコンデンサとかが死にかけている?
正攻法
- 端末買い替え
- USB portを増設- PCI Express/PC Card/Express Card
 
懐が寂しい&増設できないマシン(◞‸◟)
そういえばネットワーク経由でUSBが共有できたはず
- 「ネットワーク経由でUSB共有」 鹿児島Linux勉強会 2021.01(オンライン開催) 2021-01-31
+--------+        +------------+       +---------------------+
| WebCam +------->+ USB HostPC |       | USB ClientPC        |
| C270   |  USB   |------------+       +---------------------+
+--------+        | USB/IP     |------>| USB/IP              |
                  +------------+ 1GbE  +--+------------------|
                                       |  +-->UVC/UAC        |
                                       +-------+-------------|
                                       |       +-->Video APP |
                                       +---------------------+USB/IP少し試してみて
- 設定してしまえばローカルとほとんど変わらない使用感
- 別マシンが必要
- UVCを使うならそこそこ太い回線が必要(1Gbpsあれば安心)
帯域がもったいない,エンコードするとずっと細い回線で高画質にできるよね
バックアップもほしい
スマートフォンの利用
スマートフォンを有線,ネットワーク経由でWebCamとして利用
- Iriun Webcam- Android/iOS → Linux/macOS/Windowsへ
 
- DroidCam- Android/iOS → Linux/Windowsへ
 
!
「スマートフォンをLinuxPCのウェブカメラとして使う Iriun Webcam」 小江戸らぐ 2020-04で発表
このときはDroidCamは専用kernel moduleが必要でめんどくさそうなので標準moduleが利用できるIriun Webcamを選択
それから約10ヶ月
Iriun Webcamの問題
- Debianパッケージがsidで依存関係が解決できなくなっている- 手動で依存関係を解決してパッケージを展開してバイナリを実行することは可能
 
- Video のみ(Audio機能がない)
- closed source
- 問い合わせ窓口が見当たらない
DroidCam
- Android/iOS → Linux/Windowsへ共有
- Video/Audio対応
- 専用moduleが必要だったがv1.6+で通常のv4l2loopbackが利用できるようになった
- 専用モジュールもDKMS使えばそう不便でもない?
導入
sourceを入手してインストールスクリプトを実行する(※amd64以外は要セルフビルド)
$ git clone https://github.com/dev47apps/droidcam/
$ cd droidcam
$ sudo ./install-client (1)
$ sudo ./install-dkms (2)
$ sudo ./install-video (3)
$ sudo ./install-sound (4)- DroidCam Clientアプリとアンインストールスクリプト( /opt/droidcam-uninstall)導入
- droidcam module DKMS設定 ※オプション
- droidcam module設定 ※オプション
- サウンドモジュール設定(snd-aloop module自動読み込み) ※オプション
v4l2loopback利用時
$ cat /etc/modules-load.d/v4l2loopback.conf
v4l2loopback (1)
$ cat /etc/modprobe.d/v4l2loopback.conf
options v4l2loopback exclusive_caps=1 video_nr=6,7,8 card_label="Virtual Camera,v4l2loopback-7,v4l2loopback-8" (2)- モジュール自動読み込み
- ビデオ形式をGStreamer caps指定,複数デバイス対応(オプション)
DroidCam v4l2loopback利用時
$ cat /etc/modules-load.d/droidcam.conf (1)
videodev
v4l2loopback_dc
$ cat /etc/modprobe.d/droidcam.conf (2)
options v4l2loopback_dc width=1920 height=1080 video_nr=9 card_label="DroidCam"- モジュール自動読み込み
- 解像度,ビデオデバイス番号,ラベル指定
ビデオデバイス番号はv4l2loopbackより大きくするとOBS利用時にはまらない
SecureBoot
MOKを作成して署名しないとモジュールが利用できない
$ sudo modprobe -v  v4l2loopback
insmod /lib/modules/5.10.0-3-amd64/updates/dkms/v4l2loopback.ko exclusive_caps=1 video_nr=6,7,8 card_label="Virtual Camera,v4l2loopback-7,v4l2loopback-8"
modprobe: ERROR: could not insert 'v4l2loopback': Operation not permittedAndroidアプリ起動
- カメラ,マイク切り替えや設定あり
PC側でdroidcam起動
$ droidcamカメラの操作も可能 :)
cliもある
$ droidcam-cli
Usage:
 droidcam-cli -l <port>
   Listen on 'port' for connections (video only)
 droidcam-cli [options] <ip> <port>
   Connect via ip
 droidcam-cli [options] adb <port>
   Connect via adb to Android device
 droidcam-cli [options] ios <port>
   Connect via usbmuxd to iDevice
Options:
 -a          Enable Audio
 -v          Enable Video
             (only -v by default)
 -size=WxH   Specify video size (when using the regular v4l2loopback module)
             Ex: 640x480, 1280x720, 1920x1080
Enter '?' for list of commands while streaming.sound
- Linux側でDroidCamを起動後, snd_aloopmoduleとPulseAudioを紐付ける
$ pacmd load-module module-alsa-source device=hw:Loopback,1,1 \
        source_properties=device.description=droidcam_audio- 以下のISSUEが参考になる
!
+--------+        +------------+                 +------------+
|Android +------->+ DdoidCam   +---------------->+ Video APP  |
|DroidCam|  WiFi  +---+--------+  v4l2loopback   +------------+
+-----+--+   USB      |            snd_aloop     | Zoom.us    |
      ^               |                          | Discord    |
      +---------------+                          | Jitsi Meet |
        Camera Coltrole                          | :          |
                                                 +------------+OBS Studio update
- 26.1からLinux/macOSに仮想カメラ機能が標準機能に(v4l2loopback利用)- ディストリビューションのバージョンが古い場合snapで導入が便利
- droidcamのmoduleと競合して不具合が起こることがあるのでその場合はdroidcamのデバイス番号を後ろに
- ※以前からある仮想カメラプラグインのobs-v4l2sinkは出力デバイスを選択できる
 
- Wayland対応もうすぐ
DroidCam OBS
- DroidCamをOBS Studioで利用する場合はOBS StudioにDroidCam OBS Pluginを導入して,Android側にDroidCam OBSを導入すると便利- DroidCam OBS by Dev47Apps OBS Studio Plugin
- DroidCam OBS – Google Play のアプリ
 
!
+------------+        +------------+                   +------------+
|Android     +------->+ OBS Studio +------------------>+ Video APP  |
|DroidCam OBS|  WiFi  |------------+   v4l2loopback    +------------+
+------------+   USB  | text       |    snd_aloop      | Zoom.us    |
                      | Picture    |                   | Discord    |
                      | Video      |                   | Jitsi Meet |
                      | Desktop    |                   | :          |
                      | Camera     |                   +------------+
                      | <Filters>  |
                      +------------+まとめ
- USBポートを使わなくても USB/IP や スマートフォンでWebCam & Audio を利用できるようになった
- どちらも毎回少し設定が必要なのが面倒
- 安定度はUSB/IPの方が安定している
- 画質はスマートフォンの方が上(Logitch C270とRakuten miniでの比較)
- スマートフォンで直に参加という手も……でも画面小さいかな