2016年10月30日日曜日

Raspberry Piでmotionを動かして、カメラの画像をストリーミング配信する方法


背景

motionとは、カメラの画像を保存したり配信したりできるプログラムです。
motionを使ってカメラの画像を配信するのに、ところどころ詰まったので、備忘録を兼ねて方法を共有します。

全体像

この順番に説明します。
  1. 使ったもの
  2. カメラの設定
  3. motionのインストール
  4. motionの設定
  5. 動作確認
  6. 自動起動設定

使ったもの

  • Raspberry Pi一式
    2017/11にリリースされたRaspbian(streatch)で動作を確認しました。
  • カメラ
    USBカメラでもRaspberry Pi用のカメラでも、motionで扱えます。
    Raspberry Pi用のカメラを使う場合は、カメラの有効化とv4l2デバイスとしてのマウント設定が必要です。

カメラの設定

USBカメラの場合

Raspberry Piに接続してください。

Raspberry Pi用カメラの場合

  1. カメラをRaspberry Piに接続します。
  2. 下記の手順でカメラを有効にします。
    1. 下記のコマンドを入力します。
    sudo raspi-config
    2. Interfaces options を選択します。
    3. Camera を選択します。
    4. Yes を選択します。
    5. raspi-configを終了します。
  3. 下記のコマンドを入力して、v4l2デバイスとしてカメラをマウントします。
    sudo modprobe bcm2835-v4l2

motionのインストール

下記のコマンドでインストールできます。
sudo apt update
sudo apt upgrade
sudo apt install motion

下記のコマンドでバージョンを確認できます。
2018.03.18に確認したときのバージョンは4.0でした。
motion -h


motionの設定

設定ファイルに対して、下記の変更を行いました。
/etc/motion/motion.conf
# これがonだと、画像が残ります。
output_pictures off

# これがonだと、動画が残ります。
ffmpeg_output_movies off

# これがonだと、Raspberry Piの中でしかストリームを見れません。
stream_localhost off

出力が多くないのでそれほど問題にならないとは思いますが、ファイルの増加を少しでも減らしたい場合は、「logfile」の行をコメントアウトすると、ログが出力されなくなります。

参考:
Motion Guide
Raspberry Pi に Webカメラ2(再設定)
Motion の導入手順 ~ 指定した内容、パラメータの意味について
[Motion-user] Unknown config option "sdl_threadnr"

動作確認

motionを実行します。
sudo motion

Raspberry Piが割り当てられているipの8081ポートにアクセスすると、ストリームが見れます。
(ipアドレスはRaspberry Pi上でifconfigを実行すると確認できます。)


自分の試したwifi環境だと、320x240px 2fpsの動画を4秒くらいのタイムラグで表示できました。

自動起動設定

Raspberry Pi用カメラ

「bcm2835-v4l2」を/etc/modulesに追加します。
これによって、Raspberry Pi起動時にRaspberry Pi用カメラが自走的にv4l2デバイスとしてマウントされます。
/etc/modules
bcm2835-v4l2

motion

下記のような記述をrc.localのexitより上に記述すると、Raspberry Piを起動したらmotionが動くようになります。
/etc/rc.local
motoin &

まとめ

motionを利用してカメラの画像を配信できました。

共有したい情報は以上です。

変更履歴

2016.11.15
自動起動設定を追加しました。
2017.12.29
「motionの設定」の説明文に違和感を感じたので、修正しました。
2018.03.18
「背景」「使ったもの」「カメラの設定」を追加しました。
「logfile」の出力が少なくて問題にならなさそうだったので、logfileのコメントアウトを補助的な説明に変更しました。
「sdl_threadnr 0」の設定がmotion4.0ではデフォルトでコメントアウトされていたので、記述を削除しました。
記事作成時はaptコマンドでインストールできるmotionのバージョンが3.2でしたが、確認したら4.0がインストールできるようになっていたので、Raspiカメラを使うにはビルドが必要だという記述を削除しました。
「/etc/default/motion」に記述を追加しても自動起動しなかったので、rc.localに記述を追加する方式に変更しました。

0 件のコメント :