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 permitted
Androidアプリ起動
- カメラ,マイク切り替えや設定あり
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_aloop
moduleと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での比較)
- スマートフォンで直に参加という手も……でも画面小さいかな