古いノート＋Ubuntu18.04LTSでカメラを扱えるようにする(droidcam)

※2020/11/12追記
2020/11/05頃にdroidcamのクライアントが1.5→1.6にバージョンアップしたようで、インストール手順が変わっていました。よって、以下の記載は一部、現状とそぐわないものとなっていること、ご承知おきください。

古いノートPC(FMV-BIBLO MG70W)にはカメラがついていないので、使っていないiPadやAndroidをカメラとして使えないかと模索したところ、droidcamなるアプリがあったので導入した。

# 材料
- PC：FMV-BIBLO MG70W(以下、PC)＋Ubuntu18.04LTS
- カメラ：iPad(第３世代)([スペック](https://support.apple.com/kb/SP647?locale=ja_JP))
- アプリ：droidcam([公式サイト](https://www.dev47apps.com/))

# 映像
droidcamはカメラがあるスマホ/iPadがサーバ、PCがクライアントという形での利用となるので、双方にアプリをインストールする必要がある。

### カメラ側
iOSアプリ・Androidアプリはそれぞれのストアにて提供されているので、素直にコレを入れる。無償版状態では解像度の変更やズームなどが出来ないが、今回はWebカメラがついていないPCで映像を扱えるようにすることが目的なので、無償版のままいく。

アプリを起動すると、iPad側のIPアドレスとポート番号が表示される。
カメラはフロント、背面どちらも利用可能。

### PC側
[公式サイトの記載](https://www.dev47apps.com/droidcam/linux/)に沿ってアプリを入手＆インストールする。Linux版モジュールは64bit版のみ提供で、32bitの場合は自分でコンパイルする必要がある模様。64bitでよかった。

```
cd /tmp/
wget https://files.dev47apps.net/linux/droidcam_latest.zip
echo "952d57a48f991921fc424ca29c8e3d09 droidcam_latest.zip" | md5sum -c --

unzip droidcam_latest.zip -d droidcam && cd droidcam
sudo ./install
```

場合によってはここで躓くことがあるようだが、幸いにして(理由はわかってないが)躓かずにインストールが終わった。

ということで起動。

```
$ droidcam
```

すると下のようなウインドウが開くので、カメラ側のIPアドレスとポート番号を入力してConnectを押す。

![qiita_20201105_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552413/56a23b66-d23d-3272-3e2c-2dd5471ae3bb.png)

確認のためにZoomを起動し、[Setting]→[Video]を開くとカメラの映像が映った。

![qiita_20201105_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552413/74311173-8618-7f0a-3c6a-41ce39557d9d.png)

この状態でzoomのミーティングをしてみたところ、相手側にdroidcamを通した映像がちゃんと映っていたので、うまくいったことがわかった(^^)

なお、zoom以外ではこんな感じ。

- cheese：映って、写真撮影やビデオ録画も出来た
- skype：映った
- VLC：3.0.11だとキャプチャーデバイスで開こうにもエラーになったが、3.0.8-0ubuntu18.04.1だとエラーにならず映った

ということでzoom以外でも十分使えそう。

※追記(2020/11/09)
PC-iPadをUSB接続してdroidcamを試したところ(Wifi切って)、こちらもなんの苦労もなくつながりました。

# 音声
上記まででは映像のみの転送だが、音声の転送も出来るので、公式HPの記載に沿って以下を実行した。

```
$ sudo ./install-sound
```

インストールは無事終わったのでPC→iPadへ再接続してみてZoomで確認したところ、iPadのカメラの映像はPC側に転送されているものの、iPadのマイクを通した音声は認識しなかった(マイクボリュームのインジケータが動かなかった)

なのでデバイスの状態を確認するために、[設定]→[サウンド]を開いたところ、このインストールによって追加されたと思われるものが表示された。

![qiita_20201105_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552413/a8ae10e2-2549-cff4-30ee-073036a7af5b.png)

以前はマイク類を接続していない状態では何も表示されていなかったことから、今回表示されている「アナログ入力」がdroidcamの音声入力なのだと考えた。しかし、カメラ(iPad)側にいくら声をかけても入力レベルのインジケータは微動だにしない。

試しに自分のスマホ(Android)にもdroidcamを入れて繋いでみたが、映像OK・音声NGの状況は変わらないので、問題はPC側にある可能性が高いと考えてWebを徘徊。

結果、同じようなことで悩んでいる人がいて、droidcam soundをインストールすると音声に関するデバイスの設定・定義が狂ってしまうことがあることはわかったが、それがdroidcamのせいなのか、OSのせいなのかまでは読み解けなかった。

また、対処としてはPC側でdroidcamを起動した後、以下のpacmd〜を実行すると入力デバイスに「droidcam_audio」が追加された。

```
$ droidcam &
$ pacmd load-module module-alsa-source device=hw:Loopback,1,0 source_properties=device.description=droidcam_audio
```
![qiita_20201105_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552413/2ea7776a-9fc7-36c9-2875-fbd075d6f7c2.png)

この追加されたdroidcam_audioを選択した状態でカメラ側と接続すると、無事、カメラ側の音声をPC側で認識するようになった。ただ、この対処(pacmd)はPCを再起動する度に実行する必要があるっぽい(きっと永続化する方法はあるんだろうけど)。

まぁ、droidcamを利用してzoomをやる場合に、マイクやスピーカーはヘッドホンを使う＝カメラ側のマイクを使うことはないので、droidcamで音声を転送しなくても実質的には影響ないと思う。zoom以外の場合は考えものだが・・・。

いずれにせよ、このサウンドに変な情報が残ったのはちょっと気持ち悪いが(入力だけでなく、出力にも存在する)、現状では内蔵スピーカーや端子・USB接続のイヤホン＆マイクはちゃんと使えている。このゴミを削除して悪い影響を広げたくないため、ひとまずはこのままとする。

気持ち悪いけど。

## ランチャーに登録
毎回、端末からコマンドを打つのは美しくないので、先人たちの足跡を真似してランチャーにショートカットを登録した。

~.local/share/applications/droidcam.desktop

```
[Desktop Entry]
Version=1.0
Type=Application
Name=droidCam
Comment=スマホやiPadがPCのWebCameraになります
Exec=droidcam
Icon=droidcam
Path=/usr/bin
Terminal=false
StartupNotify=false
```

~.local/share/icons/droidcam.png
画像ファイルをアイコンとして上記場所・名前で保存。

これで[アプリケーションを表示する]から起動できるようになった。

## 雑感
- PCと同じく古くてどう使おうか悩んでいるiPadの使い道が出来たのはよかった
- カメラ側のdroidcamの電池消費量が激しいのは改善してほしいところ
- ゴミを消すためにサウンドデバイス周りの情報を見たものの、難しすぎてくらくらした