ラズパイを使った配信カメラ


概要:

家にあったRaspberry pi2 (ラズパイ2、以下ラズパイ)を使って何かできないかと調べていたところ、「ローカル環境で使える配信カメラ」というものがあったので、やってみました。

とりあえずwebカメラとラズパイを繋いでライブストリーミング映像が見られるようにしてみました。

必要なもの:

  • USB接続のwebカメラ
  • ラズパイ(raspberry pi2)
  • マイクロusbケーブル (電源供給用)
  • SDカード (OS、システムドライブ用)
  • HDMIケーブル (OSインストール用)
  • lanケーブル (ストリーミング用)
  • *wifiアダプタ (ssh用 ← ストリーミング配信に使うと途中で止まってしまう)

*wifiアダプタはlanケーブルがあれば特に必要ありません

ストリーミング配信までの手順:

  1. ラズパイにOSをインストール (今回はraspbian)
  2. sshが使えるように設定します。
  3. webサーバソフトのインストール (今回はApache)
  4. ftpサーバソフトのインストール
  5. ライブストリーミングのインストール (今回はmotion)
  6. ライブストリーミングの起動

OSをラズパイにインストールするためには、まずOSイメージをダウンロードして、SDカードに書き込む必要があります。

次に書き込みが終わったSDカードをラズパイに入れて起動します。

初期設定(セキュリティなど)が終えたらsshを使えるようにして、PCから接続します。

PCからラズパイにssh接続したら、webサーバソフト(Apache)、ftpサーバソフト(vsftpd)を順番にインストールします。(特に設定はしませんが起動しているかチェックします)

ストリーミング配信が可能なソフトとしてはlinux用のmotionというものがあり、これもインストールして使います。

設定のやり方、詳細につきましては以下のリンクをご参考ください。

ubuntuでラズパイosをSDカードに書き込む

Raspberry Pi 初回設定(購入 + OSインストール + セキュリティ設定)

ラズパイで動体検知対応の監視カメラを作る (3/3)

ストリーミングを実行した結果:

今回はwebカメラにELECOM ucam-dla200hbkを使いました。

ELECOM ucam-dla200hbkの仕様:

  • 最大解像度: 1600 ☓ 1200 px
  • 最大フレームレート:MJPEG形式 25fps (〜 640 ☓ 480 px), 15fps (〜 1280 ☓ 1024px), 10fps (1600 ☓ 1200px)
  • 色数:1677万色(24bit)

映像の確認方法:

ラズパイのmotion設定を変更: $sudo vi /etc/motion/motion.conf の stream_localhost on → off にする。
PCのwebブラウザにラズパイアドレス:8080を入力:192.168.xx.xx:8080
配信が確認されればOKです。

このmotionは、動態検知機能もあるので監視カメラのように使えます。

次にmotionを監視カメラ用の設定にします。

監視カメラの設定:

動態検知機能により動画映像が記録され、記録映像をブラウザで確認できるようラズパイのmotion設定を行う。

記録映像の保存先ディレクトリを作る:

$ sudo mkdir /var/www/html/motion

設定ファイル(motion.conf)の変更:

コンソールから次のコマンドで編集画面へ

$ sudo vi /etc/motion/motion.conf

設定項目、変更値は次の通り

daemon off → on

norm 0 → 1

width 640 → 320

height 480 → 240

framerate 2 → 30

stream_localhost on → off

target_dir /var/www/html/motion (localhost/motionで記録映像の確認ができる) 

threshold 10000

ffmpeg_output_movies on

ffmpeg_bps 500000

stream_maxrate 10

motion を自動起動させる設定:

$sudo  vi  /etc/default/motion  (設定変更)
start_motion_daemon  =  yes

撮影された映像が定期的に削除されるように設定:

$ sudo  vi  /etc/cron.d/motion_clean  (スクリプトファイル作成)
0  0  *  *  *  find  /var/www/html/motion  -mtime  +1  -delete  (毎日0時00分に2日前まで削除)
$ sudo  chmod  +x  /etc/cron.d/motion_clean  (実行権限付与)

motion 起動:

$sudo  motion

motion 停止:

$sudo  service  motion  stop

motion 再起動:

$sudo  /etc/init.d/motion  restart

監視カメラを起動してmotionの設定を調整する:

外に向けてカメラを設置しました。対象が小さくなったので動作検知しきい値(threshold)を10000→150へ*設定変更

*設定変更はラズパイにssh接続して、$sudo vi /etc/motion/motion.confでします。

問題なさそうなので、画面サイズを大きくしてみる。width320→640、height240→480。それに伴いthreshold150→500へ変更。

結果、映像の容量サイズが1件につき10MBほど上昇してしまった。SDカードの容量がそれほど大きくないので画面サイズを元に戻す。width320、height240、threshold150、これでしばらく様子を見る。

大きくても2〜3MBに収まるようになりました。これで1分程度の映像になります。

次に、映像が少々荒いように感じたので画質を良くする設定

ffmpeg_bps 500000 → 800000 (後日、この設定はカメラの性能によることが判明したので500000に戻しました)

これで一日の記録映像がおよそ100MBぐらいになる。しばらく様子を見る。

今後の予定:

  • ラズパイから配信される映像が外から見られるようにする。レンタルサーバに上げてみる?その他方法を調べる。
  • ブラウザから記録映像が見られるようにする。削除できるようにする。
  • ユーザーIDとパスワードを設定する。

2022年8月現在でこちらの投稿記事は新しい内容に置き換わっています。

こちらをご覧ください。

外出先から配信映像を確認する方法はこちらをご覧ください。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)