さて、fswebcamで定期的に写真を撮っていくということで動作も軽く、問題なくどんどん画像が溜まっていくということは確認できた。
しかしやはりカメラとしてはファインダーがないのはちょっとつらい。写真撮ってビューワーで見てカメラ動かして・・・というのは操作性が悪すぎる。
ということでフレーミングを決めるためにguvcviewというGUIな写真・ムービー撮影ツールを試してみた。
Raspberry Pi 3 とウェブカメラ(ロジクール C270) - 今日も微速転進
それ自体撮影や映像の調節などができるアプリなわけだけど、どうもラズパイには荷が重いのか安定しない。
3度に1回は起動に失敗する感じだ。
そこでやはりmotionに戻ってきた。
これは動くものを感知して自動で撮影する監視カメラ的なツールなのだけれど、単純に映像をストリーミングすることもできる汎用性の高いアプリである。使用例もかなりたくさん紹介されているので、困ったときにもいろいろ参考にできる。
Raspberry Piでmotionを動かして、カメラの画像をストリーミング配信する方法 : 試行錯誤な日々
Motion の導入手順 ~ 指定した内容、パラメータの意味について
Raspberry Piセットアップ(motion編)Stretch版 | MacFeeling Blog
キモとしては画像、動画を保存しないように/etc/motion/motion.confに設定するということだろう。
で、せっかくなのでpython+flaskのwebアプリを作ってVNCやsshなしで使えるようにしてやろうととりかかったのだが・・・
motionを起動しているとfswebcamが写真を撮る事ができないので、フレーミングが終わったら終了してしまいたいのだが、どうもmotionの起動、終了に癖があるようで意図したとおりに動いてくれない。
かなり悩んでたどり着いた解は
/etc/motion/motion.conf
daemon on
/etc/default/motion
start_motion_daemon=yes
/etc/init.d/motion
デフォルトのまま
起動
sudo service motion start
終了
sudo service motion stop
これをflaskに仕込む。
ただし、この設定ではシステム起動時にmotionも起動してしまう。今回はwebから制御したいので
sudo service motion stopを/etc/rc.localに追加して、一旦起動はするが、すぐに終了しておく。
flaskのアプリをserviceとして起動する設定は
/etc/sysconfig/kcam
FLASK_APP="./cam/views/home.py" LC_CTYPE="en_US.UTF-8" _EOF_
を用意し、
/etc/systemd/system/kcam.service
[Unit] Description=python instance to serve kcam After=network.target [Service] User=pi Group=pi EnvironmentFile=/etc/sysconfig/kcam WorkingDirectory=/home/pi/kcam ExecStart=/usr/local/bin/flask run --host=192.168.0.10 [Install] WantedBy=multi-user.target
という感じのファイルを作成。
ユーザpiのホームディレクトリにアプリ本体をおいたとして
ExecStart=/usr/local/bin/flask run --host=192.168.0.10
の部分は自分の環境に合わせるように。