TOP » Ubuntu のインストール » ウェブカメラ » Motion でライブカメラ+動体検知サーバー構築

Motion でライブカメラ+動体検知サーバー構築

Ubuntu 8.04 Server Edition に Motion をインストールしてライブカメラ+動体検知サーバーを構築します。
Motion と Apache を連携してライブ映像を配信することが可能です。
そして動体検知を行いその映像を記録することができます。
今回はその動体検知した映像を ffmpeg と gpac を使って携帯フォーマットに変換して、携帯から動画を閲覧できるようにしようと思います。
今回使用したウェブカメラは Qcam Pro 4000 (QV-4000R) です。

Motion のインストールと設定

まずはソフトウェアのインストールから。
apt を使って動体検知ソフトの Motion 、動画を配信するウェブサーバーと PHP、動画変換を行うマルチメディアコンバータ ffmpeg と gpac のインストールを行います。

$ sudo apt-get -y install motion apache2 php5 ffmpeg

Motion の自動起動ファイルを少し修正します。
30行目あたりです。

$ sudo vi /etc/init.d/motion
/etc/init.d/motion
case “$1” in
 start)
   echo “Starting motion detection : $NAME”
#    start-stop-daemon –start –exec $DAEMON -b –chuid motion || true
   start-stop-daemon –start –exec $DAEMON -b || true
   ;;

続いて Motion の設定を行います。
設定ファイルは /etc/motion/motion.conf で行います。
変更箇所は少ないので、その部分だけ抜粋します。

$ sudo vi /etc/motion/motion.conf
/etc/motion/motion.conf
# Start in daemon (background) mode and release terminal (default: off)
#daemon off
daemon onバックグラウンドで実行

# Image width (pixels). Valid range: Camera dependent, default: 352
#width 320
width 640

# Image height (pixels). Valid range: Camera dependent, default: 288
#height 240
height 480

# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
#framerate 2
framerate 301秒間に撮影する枚数

# Threshold for number of changed pixels in an image that
# triggers motion detection (default: 1500)
#threshold 1500
threshold 300動体検知を認知する値

# Output ‘normal’ pictures when motion is detected (default: on)
# Valid values: on, off, first, best
# When set to ‘first’, only the first picture of an event is saved.
# Picture with most motion of an event is saved when set to ‘best’.
# Can be used as preview shot for the corresponding movie.
#output_normal on
output_normal off画像ファイルを保存しない

# mpeg1 – gives you files with extension .mpg
# mpeg4 or msmpeg4 – give you files with extension .avi
# msmpeg4 is recommended for use with Windows Media Player because
# it requires no installation of codec on the Windows client.
# swf – gives you a flash film with extension .swf
# flv – gives you a flash video with extension .flv
# ffv1 – FF video codec 1 for Lossless Encoding ( experimental )
#ffmpeg_video_codec swf
ffmpeg_video_codec mpeg4動画をmpeg4で保存

# Draw the number of changed pixed on the images (default: off)
# Will normally be set to off except when you setup and adjust the motion settings
# Text is placed in upper right corner
#text_changes off
text_changes on変化があったピクセル数を表示

# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
#target_dir /tmp/motion
target_dir /var/www保存するディレクトリ

# File path for motion triggered ffmpeg films (mpeg) relative to target_dir
# Default: %v-%Y%m%d%H%M%S
# Default value is equivalent to legacy oldlayout option
# For Motion 3.0 compatible mode choose: %Y/%m/%d/%H%M%S
# File extension .mpg or .avi is automatically added so do not include this
# This option was previously called ffmpeg_filename
#movie_filename %v-%Y%m%d%H%M%S
movie_filename %Y%m%d%H%M%S例)20090313.avi

# Quality of the jpeg images produced (default: 50)
#webcam_quality 50
webcam_quality 100ライブ画像の画質

# Maximum framerate for webcam streams (default: 1)
#webcam_maxrate 1
webcam_maxrate 30ライブ画像のフレームセット

# Restrict webcam connections to localhost only (default: on)
#webcam_localhost on
webcam_localhost offローカルホスト以外もライブ映像を配信

携帯動画へ変換

Motion で撮影した mpeg4 の動画を ffmpeg を使って携帯で再生できる動画ファイルへ変換を行います。
この作業は bash スクリプトで行い、cron を使って定期的に行うように設定します。

$ sudo vi /etc/motion/convert.sh
/etc/motion/convert.sh
#! /bin/bash

dir=/var/www
for i in $dir/*.avi
do
 n=`basename $i | cut -d. -f1`
 ffmpeg -i $i -s 640×480 -ar 0 -r 6 $dir”/”$n”.flv”
 ffmpeg -i $i -vcodec mpeg4 -b 128k -s 640×480 -r 15 -ab 12200 -ar 8000 -ac 1 -flags bitexact $dir”/”$n”.3gp”
 rm -rf $i
done

cron に登録して 10 分毎に実行するように設定します。(最後の行に追加)

$ sudo vi /etc/crontab
/etc/crontab
*/10 * * * * root /etc/motion/convert.sh > /dev/null 2>&1