AndroidスマホをLinux PCのカメラにする

自分の作業机は正面に27インチディスプレイを置いてノートPCはその脇に置いてるんだけど、Zoom とかのオンラインミーティングで顔出しする時にPCのカメラだと斜めからの映像になって良くないなーと思ってて、Webカメラつけるのもいいかと思ったんだけど今品薄だし、そういえばAndroidスマホをPCのカメラにできるというのをどっかで読んだ気がする。

…ということで、テキトーに「linux android webカメラ」とかでググると、ケータイWatchの記事が見つかった。

k-tai.watch.impress.co.jp

DroidCam という Android アプリを使えばできるらしい。

試してみたらできたんだけど、

  • フロントカメラが使えない
  • adb で繋ごうとすると Linux のクライアントアプリが落ちる

…ということでやめ。

Google Play で「linux webcam」で検索すると「IP Webcam」というのが見つかった。

play.google.com

起動すると設定画面が出てきて、一番下の「映像ストリーミング開始」をタップするとカメラが起動する。

カメラが動くと IPv4: https://192.168.10.100:8080 のように表示されてるので、ブラウザでそのURLにアクセスするとこんな画面が表示される。

f:id:tmtms:20200518014137p:plain

ブラウザでいろいろコントロールできる。結構高機能。

上の「ビデオレンダリング」の「JavaScript」とかを押すとブラウザ上にカメラ映像が表示される。

f:id:tmtms:20200518014922p:plain

で、肝心の PC のカメラにする方法は、ブラウザ画面上部の「ビデオチャットドライバー」から辿れる。Linux の場合は GitHub。

github.com

ドライバーと言ってもただの bash スクリプトで、変なアプリをインストールさせられるわけではない。

スマホが USB ケーブルでつながっていて Linux に adb がインストールされていれば adb を使用して通信するように動く。 ただし、スマホの「開発者向けオプション」で「USBデバッグ」を有効にしておく必要あり。

そうでなければネットワークで繋ごうとするので、スクリプト中の WIFI_IPPORT をスマホに表示されているものに書き換えておいた方がいい。 あと、WIDTHHEIGHT の比率がスマホの画面と合ってないと映像が太ったり痩せたりするので合わせておく。

GST_VIDEO_CONVERTER="ffmpegcolorspace" という行があるが、これは最近は videoconvert というものに変わったらしいので書き換えておく。 (https://stackoverflow.com/questions/44780991/no-element-ffmpegcolorspace-in-gstreamer)

スクリプトを実行すると、Debian, Ubuntu の場合は標準の apt リポジトリから必要な debパッケージ1が自動的にインストールされる。 うまくいくとこんなダイアログが表示される。

f:id:tmtms:20200518021734p:plain

この場合は /dev/video2 がカメラデバイスとなっている。

OK を押すと、端末に

Press enter to end stream

と表示されるので、そのまま放置しておく。Enter を押すと終了する。

これでカメラとして使えるようになってるはず。

なにかテキトーなアプリで動作確認する。

VLC は「メディア」→「キャプチャーデバイスを開く」→「ビデオデバイス名」に /dev/video2 を入力(メニューから選択)して、「再生」を押すと映像が表示される。

Zoom だと設定の「ビデオ」→「カメラ」のメニューに「Dummy video device (0x0000)」というのが増えてた。

スクリプトを終了しても adb が残ってるので、次に起動した時に

Your port 8080 seems to be in use: falling back to Wi-Fi. If you would like to use USB forwarding, please free it up and try again.

みたいな理不尽なことを言われるので、adb は kill しておいた方が良さそう。

いろいろ変更したけどローカルPCに置いておくと無くしそうなので、GitHub で fork して自分用のものを置いておく。

https://github.com/tmtm/ipwebcam-gst/blob/master/prepare-videochat.sh


  1. インストールされるパッケージは、bc, zenity, v4l2loopback-dkms, python-apport, gstreamer1.0-pluseaudio, v4l-utils, gstreamer1.0-tools