その4; 一眼レフIPカメラをラズベリーパイに組み込む
前回のあらすじ
前回は,一眼レフカメラをLinux PCに繋いでIPカメラにし,Wi-Fiを通じてWindows PCに映像を送るシステムを構築した.
IPカメラシステムをラズベリーパイに移植する
Web会議のために,わざわざLinux PCを立ち上げるのは,いかにも使い勝手が悪い.そこで,シングルボードコンピュータのラズベリーパイにシステムを移植して,必要な機能が自動的に立ち上がるシステムにすることにした.ラズベリーパイにもたくさん種類があるが,カメラに繋ぐためのUSBポートがあり,Wi-Fiが使えることが条件で最も安価なものはRaspberryPi Zero Wになる.もともとエンコーディングのような重たい処理をしているわけではないので,おそらくこれで正常動作するはずである.これだと,3000円以下で入手可能だ.microSDは8GBあれば十分だろう.
ちなみに,秋葉原では2020年7月現在,2000円ちょいで売ってます.
OSをインストールしてSSHでログインする
ここからの作業はWi-Fiルーターに接続されたPCで行うが,OSはWindowsでもLinuxでもMacOSでも構わない.まずココからRaspberry Pi OS (32-bit) Liteのイメージファイルをダウンロードする.さらに,microSDカードに書き込むためのRaspberry Pi imagerもココからダウンロードしてインストールしておこう.Raspberry Pi imagerを立ち上げ,CHOOSE OSから"Use custom"を選び,ダウンロードしたイメージファイルを選択する.次に空のmicroSDカードをリーダーを介してPCに接続し,SD cardからmicroSDカードを選択する.最後に,WREITEボタンを押せば書き込みが始まる.
無印良品のアクリルケースに入れた.左からPCモニター,ワイヤレスキーボード用ドングル,USB電源がつながっている.左下はリセットスイッチで,ラズベリーパイに半田つけで接続した.
Rasberry Pi ZeroのmicroUSB端子にキーボードを,miniHDMI端子にはHDMIディスプレイを接続し,OSを書き込んだmicroSDをスロットに挿入してから,電源専用のmicroUSB端子にケーブルを接続し,USB電源に接続するとOSが立ち上がるはずである.”user name:”には"pi"を入力し,”password"には"raspberry"を入力するとログインできる.
ログインしたら"sudo raspi-config"と入力すると,初期設定プログラムが立ち上がるので,初期設定をしていく.まずパスワードを変更し,ホストネームを適当な名前に変更する.私の場合は"ipcamera"にした.次にWi-Fiの設定ができるので,ここで設定する.あとは”Interfacing options"からSSH接続を許可する.とりあえずこれで問題ないはずだ.raspi-configを抜けて,Wi-Fiがつながっているのを確認するため,”sudo apt update"と"sudo apt upgrade"を入力して反応するのをたしかめておく.
ここまで来たら,一度ラズベリーパイをシャットダウンし,キーボードを外しておく.再び電源を接続し,今後はPCからの操作になる.PCからターミナルソフトを立ち上げる.Windows 10ならPower Shellが良いだろう."ssh pi@<host_name>.local"と打ち込む.ここで<host_name>は先ほど設定したRaspberry Piのホストネームなので読み替えてほしい.そうすると"password"を訊いてくるので,先ほど設定したパスワードを入力すると,ログインできるはずだ.
ソフトウエアのインストールと自動起動の設定
ストリーミングソフトの設定は,基本的に前回のLinux PCと同じであり,なにも難しいところはない.トラブルがなければ30分以内にできてしまうだろう.まず,"sudo apt install gphoto2 libgphoto2-dev"と入力し,gphoto2をインストールする.インストールしたら,キーボードを外したmicroUSB端子を利用して一眼レフカメラを繋ぐ."gphoto2 --auto-detect"と入力し,カメラが認識されていることを確認する.確認できたら,"sudo apt install build-essential imagemagick libv4l-dev libjpeg-dev cmake git"と入力して,各種ソフトをインストールする."cd /opt"と入力し,/optディレクトリに移動したら,"sudo git clone https://github.com/jacksonliam/mjpg-streamer.git"と入力して,mjepeg-streamerをGit-Hubからダウンロードする."cd mjpg-streamer/mjpg-streamer-experimental"と入力してディレクトリを移動したら,"sudo make"と入力して,ビルドしよう.最後に"sudo make install"と入力すれば,インストールは終了だ."export LD_LIBRARY_PATH="$(pwd)"と入力してから,"./mjpg_streamer -i "./input_ptp2.so -u 10" -o "./output_http.so -w ./www --port 8081"と入力する.ミラーが跳ね上がるカチャっという音がしてプログラムが実行されただろうか?PCのブラウザに"http://<host_name>.local:8081"と入力して画像が表示されれば成功である.以下のコマンド文を”startCamera.sh"というスクリプトファイルに保存して,"sudo chmod a+x startCamera.sh"と入力して実行権限を与えておこう.
#!/bin/sh
# 露出補正 +2/3
gphoto2 --set-config exposurecompensation="0.666"
# 絞りをF=4.2に固定
gphoto2 --set-config f-number="f/4.2"
# ホワイトバランスをCluodyに設定
gphoto2 --set-config-value whitebalance="Cloudy"
# カメラから映像を取り込み,ストリーミングする
export LD_LIBRARY_PATH="$(pwd)"
./mjpg_streamer -i "./input_ptp2.so -u 10 -d usb:001,002" -o "./output_http.so -w ./www --port 8081"
こうしておけば,次からは"~mjpg-streamer/mjpg-streamer-experimental/sratCamera.sh"と入力するだけで起動できる.
最後に,リセットボタンが押されて再起動したときに自動的にプログラムが実行されるように設定する.ディレクトリ,/etc/systemd/systemに"mjpg-streamer.service"というファイル名で次の内容のファイルを作成する.
[Unit]
Description = mjpg-streamer
After = network.target
[Service]
Type = simple
WorkingDirectory = /opt/mjpg-streamer/mjpg-streamer-experimental
ExecStart = /opt/mjpg-streamer/mjpg-streamer-experimental/startCamera.sh
Restart = always
[Install]
WantedBy = multi-user.target
"sudo sytemctl daemon-reload"と入力してから,"sudo systemctl enable mjpg-streamer"と入力すると自動起動が設定される.
使い方の手順は以下のとおり
・カメラのスイッチを入れる
・IPカメラアダプターのリセットスイッチを押す
・PCでOBS Studioを立ち上げる
・PCでWeb会議用ソフト(MS Teamsなど)を立ち上げてWeb会議を始める
使い終わったらカメラのスイッチを切る.
IPカメラアダプターはインシュロックタイでくくりつけた.カメラ・ラズベリーパイ・照明の電源はすべてUSB電源からとっている.
性能評価
Raspberry Pi Zero Wは,普通サイズのものに比べて非力なので,処理が追い付かないことを懸念したが,CPUの使用率は30%前後で,なんとか使えるレベルだった.ブラウザとOBS Studioの両方からつなげるようなことをすると負荷がかかってもたつくが,OBS Studioだけならなんとか使えそうだ.
Web会議では必要ないかもしれないが,間にOBS Studioを挟んでいるので,映像をモノクロにしたり,テロップを入れたりできておもしろい.
まとめ
ラズベリーパイの中でも最も小型で安価なRaspberry Pi Zero Wに,一眼レフカメラをIPカメラにする機能を組み込み,使い勝手は格段に良くなった.普段使いにも耐えられるものができて自己満足である.一眼レフカメラの鮮やかな映像でWeb会議に参加できるのが秘かな楽しみである.
<追記>マッキントッシュで利用する
この方法の良いところは,Web会議で利用するプラットフォームに依存しないことである.そこでマッキントッシュ(MacOS Mojave)で利用できるか試してみた.マック版のOBS StudioとVirtualCamのインストールは下のリンク先を参照して欲しい.
インストールができたら,マック版のWeb会議ソフトを立ち上げよう.
ご覧のとおり,マック版のTeamsで問題なく利用できた.
最終システムを組むのに必要な費用
少し試行錯誤しているので,実際にはもっと散財しているが,それがないとすれば,費用はこれくらいで済むはずだ.
・Nikon D5100 + 18-55mm 1:3.5-5.6G VR(中古) 16000円
・D5100用USB電源アダプタ 3700円
・USB照明(自由雲台付き) 1600円
・Raspberry Pi Zero W + microSDカード(8GB) 約3000円
・カメラスタンド製作材料費 約2000円
・カメラ用1way雲台 2100円
・アクリルケース・スイッチ・ケーブルなど 約1000円
その他,汎用の50W・4個口以上のUSB電源(充電器)が必要だ.あれやらこれやらで3万円くらいかかっているが,一眼レフカメラはWebカメラとして使わないときは普通のカメラとして活用できるので,それを考えるとそれほどでもないと思う.
これでこのシリーズは終わりである.最後まで読んでいただいた読者に感謝いたします.
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?