※2021/05/02:v1.6→v1.72へのアップデートを追記
先日、Ubuntu18.04LTSに入れた「droidcam」をLinux Mint 20にも入れようと思ったら、バージョンが1.5→1.6に上がっている上、公式サイトの手順が若干だが変わっていた(zip解凍したら、ファイルの日付が2020/11/5になってた)。
DroidCam(Dev47Apps)
https://www.dev47apps.com/
材料
- PC:FMV-BIBLO MG70W(2007年製、Core2Duo T7100@1.80GHz、4GBメモリ)
- タブレット:iPad 3(iOS 9.3.5)、Sharp SH-02M(Android 10)
- アプリ:Droidcam
インストール
iPad/Androidは公式のアプリストアから「Droidcam」をインストールする。
一方、PC=クライアントについては、公式手順に沿って進める。
Droidcam Linux
https://www.dev47apps.com/droidcam/linux/
Droidcamクライアント
まず、クライアントパッケージのダウンロード、解凍、インストール。
cd /tmp/
wget https://files.dev47apps.net/linux/droidcam_latest.zip
unzip droidcam_latest.zip -d droidcam
cd droidcam && sudo ./install-client
前回は「sudo ./install」だったので、ここからして若干変化あり。
標準のv4l2loopbackドライバ
次に、手順が更新されていたv4l2loopbackドライバ周り。
Droidcamカスタマイズなv4l2loopbackドライバがどうのこうのと書かれているものの、標準のv4l2loopbackドライバとやらが入っていればよさげなので、ここはすっ飛ばして良さそう・・・
$ sudo apt list | grep v4l2
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
gem-plugin-v4l2/focal 1:0.94-1build2 amd64
libv4l2rds0/focal 1.18.0-2build1 amd64
libv4l2rds0/focal 1.18.0-2build1 i386
qv4l2/focal 1.18.0-2build1 amd64
qv4l2/focal 1.18.0-2build1 i386
v4l2loopback-dkms/focal-updates,focal-updates 0.12.3-1ubuntu0.1 all
v4l2loopback-source/focal-updates,focal-updates 0.12.3-1ubuntu0.1 all
v4l2loopback-utils/focal-updates,focal-updates 0.12.3-1ubuntu0.1 all
って、入って無いし!(Ubuntu18.04LTSでは入ってた)
ということでv4l2loopbackドライバをインストールする。
$ sudo apt install v4l2loopback-dkms
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
提案パッケージ:
v4l2loopback-utils
以下のパッケージが新たにインストールされます:
v4l2loopback-dkms
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 1 個。
27.2 kB のアーカイブを取得する必要があります。
この操作後に追加で 109 kB のディスク容量が消費されます。
:
:
Loading new v4l2loopback-0.12.3 DKMS files...
Building for 5.4.0-53-generic
Building initial module for 5.4.0-53-generic
Done.
v4l2loopback.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/5.4.0-53-generic/extra/
depmod.....
DKMS: install completed.
$ sudo modprobe v4l2loopback
$ lsmod | grep v4l2loopback
v4l2loopback 40960 0
videodev 225280 1 v4l2loopback
$
Droidcamクライアントを起動すると
$ droidcam
Device /dev/video0 is 'Dummy video device (0x0000)' @ platform:v4l2loopback-000
Device /dev/video0 is 'Dummy video device (0x0000)' @ platform:v4l2loopback-000
Opened /dev/video0, fd:12
Audio loopback device not found.
Is snd_aloop loaded?
Audio:
とログが流れて
DroidCamのクライアントアプリのウインドウが開いた。
ここでiPad側のDroidcamを起動し、表示されたiPadのIPアドレスを入力してConnectを押したところ、Droidcamの接続は成功した。しかし、VLCやCheeseで確認しようとしてもエラーになったり、そもそもデバイスが見つからないと言われてしまい、カメラの映像を見ることはできなかった。
Droidcamカスタムのv4l2loopbackドライバ
どこが気に入らないのかはわからないけれど、ひとまずは手順に新しく追加された「Droidcamカスタマイズドライバ」を追うことにした。
$ sudo apt install linux-headers-`uname -r` gcc make
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
gcc はすでに最新バージョン (4:9.3.0-1ubuntu2) です。
make はすでに最新バージョン (4.2.1-1.2) です。
linux-headers-5.4.0-53-generic はすでに最新バージョン (5.4.0-53.59) です。
linux-headers-5.4.0-53-generic は手動でインストールしたと設定されました。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 1 個。
$ sudo ./install-video
Webcam parameters: '640' and '480'
Building v4l2loopback-dc.ko
:
(ずらずらとmakeが走る)
:
Adding options v4l2loopback_dc width=640 height=480 to /etc/modprobe.d/droidcam.conf
Adding videodev to /etc/modules-load.d/droidcam.conf
Adding v4l2loopback_dc to /etc/modules-load.d/droidcam.conf
Done
$ lsmod | grep v4l2
v4l2loopback_dc 24576 0
v4l2loopback 40960 0
videodev 225280 2 v4l2loopback_dc,v4l2loopback
$
ということで手順にある通り、モジュールに「v4l2loopback_dc」が追加された。
動作確認(IP接続)
再度、CLIから「droidcam」を起動する。
$ droidcam
Device /dev/video0 is 'Dummy video device (0x0000)' @ platform:v4l2loopback-000
Device /dev/video1 is 'Droidcam' @ platform:v4l2loopback_dc-000
Opened /dev/video1, fd:12
Audio loopback device not found.
Is snd_aloop loaded?
Audio:
同じくdroidcamクライアントのアプリが起動するが、先程とは少しログの内容が変わった。
iPad側のIPアドレスを入力してDroidcamを接続した状態とし、Mint側で「VLC」を起動すると、プレイリストで[デバイス]→[ビデオキャプチャー]に「Droidcam」が表示された。
Ubuntu(=Droidcam Ver1.5)のときは毎回デバイスを選ぶ必要があったが、Droidcamカスタムv4l2loopbackドライバを登録したことで、アプリでリストに表示されるようになったのだろう(公式にもそんな風に書かれている)。
そして、このDroidcamを選んで再生すると、iPadのカメラの映像をVLCで見ることができた。
なお、試した範囲では以下の通り。
- VLC:ビデオキャプチャーでカメラの映像が表示・録画できた
- zoom:カメラのテストで表示された
- skype:カメラのテストで表示された
- cheese:表示されるのだが、すぐにエラーになってしまった
Ubuntu18.04LTSではCheeseでも問題なく表示されていたのだが、Mintではうまくいかなかったのはちょっと残念だった(Cheeseのバージョンが違うのかも?)。
USB接続
DroidcamはIP接続の他、USB接続の2通りの接続が可能である。
iPad(iOS)の場合
今回のターゲットである「古いiPad」はUSB接続でも問題なくDroidcamを使用できた。
READMEを見る限り、iOSとは「usbmuxd」を利用して接続しているようだが、確認したところusbmuxdは導入済みだったので、追加作業せずに済んだ。
ちなみにiPadとUSB接続した上で以下のコマンドの実行でActiveとなっていた。
$ sudo systemctl status usbmuxd
● usbmuxd.service - Socket daemon for the usbmux protocol used by Apple devices
Loaded: loaded (/lib/systemd/system/usbmuxd.service; static; vendor preset: enabled)
Active: active (running) since Fri 2020-11-13 16:05:37 JST; 2s ago
Docs: man:usbmuxd(8)
Main PID: 21824 (usbmuxd)
Tasks: 2 (limit: 4602)
:
Androidの場合
一方、Androidについては、Android側を開発者モードにした上で、Androidの開発ツールである「adb」を利用しての接続となり、ちょっとだけ敷居が高い。
- adbのインストール
$ sudo apt install adb
- Android端末
モード変更は機種やOSバージョンによって異なるだろうから、参考程度(自分はSH-02M)。
- [設定]→[デバイス情報]の「ビルド番号」を連打して開発者モードに移行
- [設定]→[システム]→[詳細設定]→[開発者向けオプション]→デバッグの[USBデバッグ]をONにする
- PCとAndroid端末をUSBで接続。接続してよいかと問われたらOKを押す
- PCの端末から以下のコマンドを実行し、Android端末を認識しているか確認
$ adb devices
List of devices attached
999999999999999 device
$
ここまでやった上でAndroidのDroidcamアプリを起動→PCのDroidcamクライアント起動→USB(Android)を選んでConnectを押す、でようやくAndroid端末とのUSB接続でDroidcamを利用できた。
なお、アプリや環境にも依るだろうが、やはりIP接続よりUSB接続の方が表示が早く感じられたので、自分が使う場合はUSB接続を選ぶことになるだろう。
その他
音声
Ubuntuで試したときはアレヤコレヤした結果で繋がったものの、変なドライバ情報が残ったりしてしまったので、今回は実施していない(すみません)。
ランチャー登録
Ubuntuと同じ手順で実施。
1点追加として、desktopファイルに「Categories=AudioVideo」を追記することで、Droidcamアイコンを「サウンドとビデオ」配下に配置できた。
雑感
- Droidcamのバージョンが上がっているとは思っておらず、自分のメモが役に立たなくなっているとは・・・
- 今時、カメラなしPCなんてほとんど無いだろうから、Droidcamを使うとしたら遠隔監視なのかなと。ただ、遠隔監視だとクラウドサービス(Alfred Cameraとか)があったりするので、やっぱり古いPCで使うことになるのかなぁ・・・。
追記(2021/05/02)
久々に立ち上げたらなんか使えなくなってしまった。Ver1.72になっていたので、ついでにアップデートした。
# 古いバージョンのディレクトリにて
$ sudo ./uninstall-dkms
$ sudo ./uninstall
# 新しいバージョンのディレクトリにて
$ sudo ./install-client
$ sudo apt install linux-headers-`uname -r` gcc make
$ sudo ./install-video
$ lsmod | grep v4l2
v4l2loopback_dc 24576 0
videodev 225280 1 v4l2loopback_dc
Linuxのdroidcamを起動し、スマホのdroidcamも起動して接続したところ、無事画像が映ったのでOK。