Ubuntu 8.04 Server Edition に Motion をインストールしてライブカメラ+動体検知サーバーを構築します。
Motion と Apache を連携してライブ映像を配信することが可能です。
そして動体検知を行いその映像を記録することができます。
今回はその動体検知した映像を ffmpeg と gpac を使って携帯フォーマットに変換して、携帯から動画を閲覧できるようにしようと思います。
今回使用したウェブカメラは Qcam Pro 4000 (QV-4000R) です。
Motion のインストールと設定
まずはソフトウェアのインストールから。
apt を使って動体検知ソフトの Motion 、動画を配信するウェブサーバーと PHP、動画変換を行うマルチメディアコンバータ ffmpeg と gpac のインストールを行います。
Motion の自動起動ファイルを少し修正します。
30行目あたりです。
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 で行います。
変更箇所は少ないので、その部分だけ抜粋します。
#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 を使って定期的に行うように設定します。
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 分毎に実行するように設定します。(最後の行に追加)