超初心者がLinux motionを使ってWebカメラでライブ配信に挑戦
ubuntuでWebカメラを使う時に「motion」というソフトが非常に有名らしいです。
tamanは以前に
Webカメラで雲の動きや太陽の動きをインターバル撮影(微速度撮影)して
撮影した画像(jpg)をつないで Linux Motionで遊ぶ 動画(avi)を作りました。
ハイビスカスの開花もupしていますが、まだ勉強中なので下手ですけどご覧ください。
太陽の動きやお月様又は雲が動いていく様子は普段あまり気にしていないですけど、
あらためて動画にして観るとこれがまた面白いんだなぁ~!
この時にmotionをネットで検索して「防犯カメラ構築」とか「ライブ配信」など面白そうな記事があるのを見つけた。
ちょっと読んでみたらとっても面白そうなのでぜひやってみたくなって今回、
motionを使ってライブ配信が出来るまでの設定等を、いろんな方のサイトを参考にして作ってみました。(Tamanの備忘録です)
超初心者(PC歴3年3ヶ月,51歳のオヤジ)の作った物ですので、間違いがあると思います。あたたかい目で見てやってください
Tamanがパソコンを始めた経緯はこちらから 超初心者は固まってしまった
Webカメラで防犯カメラサーバー構築 3台のWebカメラで防犯カメラサーバー構築 2013年3月25日作成
写真をクリックすると防犯カメラ映像(動画)が不定期ですが見れる場合もあります・・・
test公開中~!Javaをinstallする場合もあるかな?
セキュリティ警告が出るが心配しないでね!
チェックを入れて「実行」するとTaman宅の防犯カメラ映像(動画)が見れると思います!
観れない場合(いつもだけど・・・)はYouTubeにupした動画がありますのでこちらをごらんください。写真をクリックするとYouTubeにupした動画見れます。
3台のWebカメラで防犯カメラサーバー構築
Taman宅の防犯カメラ(Live映像) Taman宅の防犯カメラ(Live映像) 2014/07/13停止
Motionをinstall,設定
詳しく書かれたマニュアルのサイトです。Motion WebHomeページ(英語)
Tamanは英語が苦手なのでブラウザの翻訳機能を使って閲覧しました。
一番下に参考にしたサイトもリンクしてますので合わせてご覧ください!
tamanの環境です!
OS Ubuntu Server 10.04 LTS Tamanの自作atomサーバー
ApacheでWebサーバーが構築されている
Webカメラ iBUFFALO 130万画素Webカメラ BSW13KE09HBK
(ヤマダ電機の特売で¥500円で購入、ラッキーでした)
確認用PC(Lan内) Windows xp
確認用PC(Lan外) 自宅近くの家電量販店の展示パソコン
サーバーをssh接続してWindows xpで操作してます
最初にmotionのインストール
$ sudo apt-get install motion
motion基本設定ファイル /etc/motion/motion.conf を編集
$ sudo nano /etc/motion/motion.conf
# Rename this distribution example file to motion.conf
#
# This config file was generated by motion 3.2.12
##############################################
# Daemon
##############################################
# Start in daemon (background) mode and release terminal (default: off)
daemon off 設定ファイルがある程度落ち着くまではoffの方がいいみたい
##############################################
# Capture device options
##############################################
# Videodevice to be used for capturing (default /dev/video0)
# for FreeBSD default is /dev/bktr0
videodevice /dev/video0
途中略
width 640
height 480
##############################################
# Image File Output
##############################################
# Output 'normal' pictures when motion is detected (default: on)
# Valid values: on, off, first, best, center
# 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'.
# Picture with motion nearest center of picture is saved when set to 'center'.
# Can be used as preview shot for the corresponding movie.
output_normal off 動体感知した画像を保存しない
##############################################
# FFMPEG related options
#File (mpeg) file output, and deinterlacing of the video input
The options movie_filename and timelapse_filename are also used
# by the ffmpeg feature
##############################################
# Use ffmpeg to encode mpeg movies in realtime (default: off)
ffmpeg_cap_new off (動体感知しても)動画作成をしない
##############################################
途中略
##############################################
#Snapshots (Traditional Periodic Webcam File Output)
##############################################
# Make automated snapshot every N seconds (default: 0 = disabled)
snapshot_interval 60 60秒間隔で撮影
##############################################
# Target Directories and filenames For Images And Films
# For the options snapshot_, jpeg_, mpeg_ and timelapse_filename
# you can use conversion specifiers
# %Y = year, %m = month, %d = date,
# %H = hour, %M = minute, %S = second,
# %v = event, %q = frame number, %t = thread (camera) number,
# %D = changed pixels, %N = noise level,
# %i and %J = width and height of motion area,
# %K and %L = X and Y coordinates of motion center
# %C = value defined by text_event
# Quotation marks round string are allowed.
##############################################
保存するディレクトリの変更
60秒間隔で撮影したSnapshots jpgファイルを置く場所に設定してます
# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
#target_dir /tmp/motion (#追加)
target_dir /var/www/homepage/motion_jpg (追加)
※ /var/www/~ は自分の環境に合わせる
途中略
#snapshot_filename %Y%m%d%H%M%S-snapshot
snapshot_filename %S-snapshotに変更
この設定だとファイルに00-snapshot.jpg
が付けられて、上書きされるので写真は1枚だけです。
まずはデフォルト設定でやってみるのがいいですね!
でも・・・、どんどんファイルが溜まっていって大変になる・・・
1時間で60枚
1日で1440枚
1ヶ月(31日)で44640枚
jpgファイル18kbとして1ヶ月803MBになる・・・
シェルによるプログラムを作って、ローティションやバックアップを定期的に取れれば良いのですが、まだ勉強を始めたばかりで・・・
=================================================
motion設定ファイルの編集前にやってね
target_dir /var/www/homepage/motion_jpg (ディレクトリを作るが名前はご自由に)
端末で
$ sudo mkdir /var/www/homepage/motion_jpg
ファイルやディレクトリの所有者を変更
$ sudo chown -R taman515 /var/www/homepage/motion_jpg
※ユーザー名 /var/www/~ は自分の環境に合わせる
=================================================
再びmotion設定
##############################################
# Live Webcam Server
##############################################
# The mini-http server listens to this port for requests (default: 0 = disabled)
webcam_port 8081
# Quality of the jpeg (in percent) images produced (default: 50)
webcam_quality 50
# Output frames at 1 fps when no motion is detected and increase to the
# rate given by webcam_maxrate when motion is detected (default: off)
webcam_motion off
# Maximum framerate for webcam streams (default: 1)
#webcam_maxrate 1
webcam_maxrate 4 (4fps/1秒に4コマ,自分の環境に合わせる)
2012年12月13よりwebcam_maxrate 1 に変更,だって空の様子だからね!
# Restrict webcam connections to localhost only (default: on)
webcam_localhost off ローカルホスト以外もライブ映像を配信
# Limits the number of images per connection (default: 0 = unlimited)
# Number can be defined by multiplying actual webcam rate by desired number of seconds
# Actual webcam rate is the smallest of the numbers framerate and webcam_maxrate
webcam_limit 0
##############################################
# HTTP Based Control
##############################################
# TCP/IP port for the http server to listen on (default: 0 = disabled)
#control_port 8080
control_port 0
ブラウザからコントロールしない
=================================================
nanoエディタ保存は
Ctrl + o を同時に押して,その後にEnterを押すと保存される
Ctrl + x でnanoエディタを抜ける
Tamanのネット環境
SoftBank ADSL 12M契約で
実測値 下り 3.20Mbps (399.81KB/sec)
上り 0.72Mbps ( 90.55kB/sec) という結果・・・
低速なのでwebcam_maxrate 4 4fps/1秒の設定になった
2012年12月13よりwebcam_maxrate 1 1fps/1秒に変更
空(雲)の様子だから1fps/1秒で十分だね!
motionを動かしてみる
motion起動
$ sudo motion
端末にログが出力されて動作が確認出来る
うまく起動したようだ。
/var/www/homepage/motion_jpg ディレクトリに
スナップショット00-snapshot.jpgが保存されている。
ブラウザでライブ映像が見れた!
Lan内のPC(Windows xpを使用)から
ブラウザFirefoxを起動して
http://192.168.X.X:8081にアクセスしてライブ映像が見れる事を確認する
(Tamanの環境はhttp://192.168.3.2:8081)
IE8では見れませんでした
Google Chromeは静止画になっている、なんでかなぁ?
Firefoxはバッチリ動画(4fps)が映りました。雲が動いてるよ!
終了は起動したターミナルでCtrl+Cを押す
motion 基本設定ファイルの変更
motion 基本設定ファイル /etc/motion/motion.conf の設定を自分にあった様に変更する。 motionを停止して設定を変更し起動するが再起動コマンドはここでは使わない!(例)
width 320
height 240
output_normal on
snapshot_interval 600 10分間隔で撮影
webcam_quality 85
お好みで設定しますが、少しづつ変えた方がミスが減るかも・・・
設定が固まったらmotionをデーモンとして動かす為に
/etc/default/motionをnano (テキストエディタ)で編集
$ sudo nano /etc/default/motion
start_motion_daemon=noをyesに変える
保存して閉じる
今度はmotion基本設定ファイル /etc/motion/motion.confを開いて
daemonをonに変更する。
$ sudo nano /etc/motion/motion.conf
##############################################
# Start in daemon (background) mode and release terminal (default: off)
daemon on
##############################################
# File to store the process ID, also called pid file. (default: not defined)
process_id_file /var/run/motion/motion.pid
保存して閉じる
Motion起動
$ sudo motion
あれ?動かない・・・
調べてみると、
デーモン起動ONの場合は設定ファイルにprocess_id_fileとして定義されているプロセスID記録用のディレクトリは
デフォルトでは無いので以下のコマンドで作成すると起動が出きるようだ。
$ sudo mkdir /var/run/motion
これで $ sudo motion と入力すると motion が起動する
よし、起動したぞ!うまくいった~
2013年4月20日(土)追記
2013年9月26日(木)追記
Deamon on 設定後の motion.conf ファイルの修正手順だが正しいかなぁ~?
motion start
$ sudo /etc/init.d/motion start
motion stop
$ sudo /etc/init.d/motion stop
motion restart
$ sudo /etc/init.d/motion restart
ファイル修正後に再読み込み
$ sudo /etc/init.d/motion reload
Tamanからお知らせ
これはあくまでも個人的なメモであり、この通りにやって 不具合が生じても保証の限りではありません(免責事項)
インターネットからアクセス出来るようにする
インターネット側で観る設定 Tamanはこの設定をしなくてハマリました・・・ポートフォワーディング設定でルーターの8081番ポートを開放する
(Tamanの場合はYahoo BBトリオモデム3-Gplus設定)
ここでOSの開いているポートを調べる「nmap」 というポートスキャンツールを使う。
「nmap」を利用すれば、対象のマシンの開いているポートを確認(スキャン)することができる。
インストールは端末で
$sudo apt-get install nmap
TCP で使用しているポートのスキャン
$ sudo nmap -sTV localhost
UDP で使用しているポートのスキャン
$ sudo nmap -sUV localhost
自分のサーバーのチェック以外には決して利用しないようにしてね!
サーバーOS側の8081番ポートの開放をする (Tamanはubuntu server標準のufwを有効に設定してます)
$ sudo ufw allow 8081/tcp
※ ufwを有効に設定していない場合は必要ありません
Lan内からは観れないので自宅近くの家電量販店の展示PCを使って確認した
http://<ホスト名 or ドメイン名 or サーバーのIPアドレス>:8081にアクセス
http://taman515.dip.jp:8081 (tamanの場合です)
IE9では見れませんでした・・・
Google Chromeはやっぱり静止画になっている
(2013年1月現在,Google Chromeでも動画で見れます)
Firefoxはバッチリ動画(4fps)が映りました
パソコンおやじ /WWWサーバテスト
インターネット側から自宅WWWサーバにアクセスできるパソコンおやじ/WWWサーバテストさんを利用する方法もあります。
外出せずに自宅PCからサーバーが動いているか確認するサイトです。 本当にありがたいことです
30Kbyte以下のサイズのコンテンツはであれば利用できるそうです
FirefoxからWWWサーバテストさんにアクセスしてSite URL:http://taman515.dip.jp:8081/を入力
Firefoxはバッチリ動画(4fps)が映りました
次はGoogle ChromeからWWWサーバテストさんにアクセスしてSite URL:http://taman515.dip.jp:8081/を入力
Google Chromeはなぜか静止画、ページを更新すると新しい画像になる・・・無理かな?
今はupdateを重ねて動画で見れる (2013年1月現在)
最後にIEからWWWサーバテストさんにアクセスしてSite URL:http://taman515.dip.jp:8081/を入力
すると、
「ファイルのダウンロード」画面が出る
IE8では見れないようだ
キャンセルをクリックして閉じる
ブラウザを選ばないページを作成する
しかし・・・
ある資料によると、Firefoxの国内シェアは2012年8月1日で17.9%ということなのでこのままでは
数少ないTamanのサイトに訪れた8割強の人がライブカメラ動画を見れないことに・・・
また、Webブラウザシェアで
50%近い人がWindows Internet Explorerを使っているのでIEで観れないのが一番残念・・・
そこで
Javaアプレットを使ってブラウザを選ばないHTMLページ(IEでもGoogle Chromeでも観れる)を作成する事にした
写真が完成したページで、
自宅近くの家電量販店の展示パソコンで確認した時の写真です。
1分毎更新の静止画像(jpg)はバッチリ配信出来ていたんだが、
ストリーム配信動画(4fps)がうまく表示出来ずに苦労しました・・・
(原因は8081番ポートの未開放でした)
2階の部屋からのWebカメラで東側の空を撮影して
雲が動いているのを確認出来た時、超うれしかった
クリック 沖縄ライブカメラ 糸満市より中継 10分間隔で更新
自動で最新画像に切り替わります
夜はご覧になれませんが、お月様が見れる時もあります
参考までに
Javaアプレットを配布しているのはどんなサイトかな?
http://www.charliemouse.com:8080/ ホーム
左メニューSoftwareからCambozolaをクリックして
Downloading
Download Cambozola as a .tar.gz file
このファイルをダウンロードするんだな
http://www.charliemouse.com:8080/code/ ファイル置き場
http://www.charliemouse.com:8080/code/cambozola/ DLページ
Tamanはzip fileをWindows xpにDLして内容を確認しました。
なるほど勉強になります
ubuntu server10.04LTSが入っているPCにDLするやり方はこちら
cambozola streaming image viewerのダウンロード
$ sudo wget http://www.charliemouse.com:8080/code/cambozola/cambozola-latest.tar.gz
ファイル解凍
$ sudo tar zxvf cambozola-latest.tar.gz
cambozola streaming image viewerをWebサーバの公開ディレクトリに配置
$ sudo cp /home/taman515/cambozola-0.92/dist/cambozola.jar /var/www/homepage/
※ /home/taman515 と /var/www/homepage/ は自分の環境に合わせる
ダウンロードした cambozola streaming image viewerを削除
$ sudo rm -rf /home/taman515/cambozola-latest.tar.gz
下記の内容を記述したHTMLページを作りサーバの公開ディレクトリに配置
※Tamanの場合は /var/www/homepage/に配置した
webcame.html ページ(Lan内Test用です)
========================================================
<html>
<title>Live camera</title> ※
<body>
<h1>Itoman Live camera</h1> ※
<applet code="com.charliemouse.cambozola.Viewer"
archive="cambozola.jar" width="480" height="360">
<param name="url" value="http://192.168.0.2:8081"></param>
</applet>
</body>
</html>
=========================================================
ブラウザ ( IE,firefox,Google Chrome ) からアクセスすると下のような指示が出たらJavaの実行を許可して下さい
ライブ画像が見られない方はJavaをインストールする必要があります。
無料Javaのダウンロード
セキュリティ警告”が表示されますが心配いりません!ボックスにチェックを入れ、
『実行』をクリックしてアプリを起動して下さい
これで観れるようになります
下の写真が作成したHTMLページだが、ちょっとかっこ悪い・・・
Webに公開するときはアドレスを変え下さい。
<applet code="com.charliemouse.cambozola.Viewer"
archive="cambozola.jar" width="480" height="360">
<param name="url" value="http://taman515.dip.jp:8081"></param>
</applet>
※title、ドメイン名 or サーバーのIPアドレスは自分の環境に合わせる
自分で好みのページを作ってサーバーにupして公開する。
実際に作成して公開したページは
http://devoutaman515.dip.jp/webcame.html です
ブラウザで確認
自宅Lan内からは観れない・・・
WWWサーバテストさんはJava Appletは動作しませんので、自宅近くの家電量販店の展示PCを使って
作成したhtmlページに
IE9 ,Firefox ,Google Chromeでアクセスして確認しました。
OKバッチリ映ってました!
ただし、展示PCにJavaがインストールされていない場合は観ることが出来ません
お友達のPCで確認が出来るといいですね!
IEとGoogle Chromeで観れるようになったのはうれしいね
Motionを自動起動したい・・・
停電でサーバーが停止した後に電力が復旧した場合、PCの電源を入れるとApache HTTP Serverは直ぐに起動するがMotionは手動じゃないと立ち上がらない・・・
そこで Ubuntu + Motion で監視カメラシステム構築 を参考にして、
自動起動ファイルを修正してMotionの自動起動をやってみました。
Motion の自動起動ファイル修正の手順
まずMotionの停止 $ sudo /etc/init.d/motion stop 自動起動ファイルを修正 $ sudo nano /etc/init.d/motion 51行目あたり case "$1" in start) if check_daemon_enabled ; then if ! [ -d /var/run/motion ]; then mkdir /var/run/motion fi chown motion:motion /var/run/motion log_daemon_msg "Starting motion detection daemon : $NAME" if start-stop-daemon --start --oknodo --exec $DAEMON -b ; then log_end_msg 0 else log_end_msg 1 RET=1 fi fi ;; 修正後、保存して閉じる===============================================
PCを再起動してMotionが自動起動するのを確認できました!
2013年10月25日(金)追加
Tamanからお知らせ
これはあくまでも個人的なメモであり、この通りにやって 不具合が生じても保証の限りではありません(免責事項)
最後に
=======================================
以下の方々のサイトを参考にしてストリーミング配信が出来ました、ありがとうございます
自宅サーバー Debian/Ubuntu/Motionでライブカメラ+動体検知サーバー構築
Weblog/LinuxでWebカメラを使う(ストリーミング配信)[motion]
Papa-Net/ライブカメラサーバー(motion)
迷途覚路夢中行/サーバーでライブ映像配信〔11〕
Index of /.Phantom/Ubuntuで監視カメラ
監視カメラ(動体検知・メール通知・クラウドへ保存)をUbuntuで構築する
2012年8月11日(土)作成 2013年1月31日修正