Raspberry Piのビデオ監視

一日の良い時間!



大New日、私はある種のビデオ監視を構築することを考えていました。 必要なものはすべて手元にありました。



記事を読んだ後、著者の考えを少し発展させることにしました。



私のアイデアと著者のアイデアの主な違いは、ビデオ録画という主要な機能を失うことなく、イベントをリアルタイムで表示できることです。



知人


ですから、まず最初に、メインの「コンポーネント」について理解してください。

Raspberry Piの外観:



特徴:



pi@hall-pi ~ $ cat /proc/cpuinfo processor : 0 model name : ARMv6-compatible processor rev 7 (v6l) BogoMIPS : 2.00 Features : swp half thumb fastmult vfp edsp java tls CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xb76 CPU revision : 7 Hardware : BCM2708 Revision : 000e Serial : 000000005a82c372
      
      







公式にサポートされているディストリビューションのリストはこちらにあります 。 グラフィカルシェルなしでRaspbianを選択しました。



インストールプロセスは非常に単純であり、詳細な説明は必要ありません。そのため、注意が必要な主な事実をリストします。

  1. タイムゾーン設定
  2. コンピューター名の設定
  3. SSHアクセスを有効にする
  4. システム更新


必要な設定をすべて完了したら、続行できます。



準備する


まず、必要なすべてのパッケージをインストールします。

 sudo apt-get install imagemagick libav-tools libjpeg8-dev subversion
      
      





その後、mjpg-streamerをダウンロードしてコンパイルします。

 sudo svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer cd mjpg-streamer make
      
      





なぜなら すべてのデータがクラウドに保存され、WebDAVを介してリモートファイルシステムで作業を構成します。

 sudo apt-get install davfs2 sudo mkdir /mnt/dav sudo mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi
      
      





ユーザー名とパスワードを毎回入力しないようにするには、それらをファイルに追加する必要があります

/ etc / davfs2 /シークレット

 /mnt/dav user password
      
      







作業プロセス


/etc/rc.localにコマンドを追加してWebDAVをマウントし、スクリプトを実行してネットワークにブロードキャストします。

 mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi cd /home/pi/mjpg-streamer && ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
      
      





ここで、アドレスhttp://:8080にアクセスして、カメラにアクセスします。 ルーターのポートを転送するためだけに残り、ローカルネットワークの外部のカメラにアクセスできます。



タイムラプスビデオを作成する


まず、カメラから画像を取得する必要があります。 なぜなら 既に撮影されている場合(画像はWebサーバーによってブロードキャストされます)、Webサーバーから現在の画像を取得する機会を使用します。

 curl http://localhost:8080/?action=snapshot > out.jpg
      
      





画像に画像の日付を描画したい場合は、convertコマンドを使用できます

 timestamp=`stat -c %y out.jpg` convert out.jpg -fill black -fill white -pointsize 15 -draw "text 5,15 '${timestamp:0:19}'" out_.jpg
      
      





スクリプトのフルバージョン:

 #!/bin/bash filename=$(perl -e "print time") foldername=$(date --rfc-3339=date) curl http://localhost:8080/?action=snapshot > $filename timestamp=`stat -c %y $filename` mkdir /mnt/dav/out/$foldername convert $filename -fill black -fill white -pointsize 15 -draw "text 5,15 '${timestamp:0:19}'" /mnt/dav/out/$foldername/$filename.jpg rm $filename
      
      





ビデオはavconvコマンドによって構築されます。

 avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 out.avi
      
      





ビデオビルドスクリプトのフルバージョン:

 #!/bin/bash filename=$(date --rfc-3339=date) i=0 for f in `ls -tr /mnt/dav/out/$filename/*.jpg 2>/dev/null` do newf=`printf %06d $i`.jpg echo $f "-->" $newf mv $f $newf i=$((i+1)) done rmdir -R /mnt/dav/out/$filename/ avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 /mnt/dav/$filename.avi rm *.jpg
      
      





Cronスケジューラーにスクリプトの実行を登録するだけです。

 * * * * * pi bash /home/pi/cam.sh 59 23 * * * pi bash /home/pi/build.sh
      
      







ビデオサンプル






おわりに


このアプローチは、ビデオの視聴に多くの時間を費やす必要性を取り除くのに役立ち、最終製品のコストも削減します。 本格的なOSの存在のおかげで、機能を正しい方向に拡張することが可能になります。



PS残念ながら、ハブで「DIY or Do it your、Iron、Gadgets」で公開してください。 オタク向けのデバイスは「十分なカルマを持っていなかったので、利用可能な最も近いものを選択しました。



All Articles