超初心者がLinux motionを使ってWebカメラでストリーミング配信に挑戦


  Tamanのホームページ  アクセスカウンター   人気ランキング

超初心者がLinux motionを使って
        Webカメラでストリーミング配信に挑戦 

ubuntuでWebカメラを使う時に「motion」というソフトが非常に有名らしいです。
tamanは以前に Webカメラで雲の動きや太陽の動きをインターバル撮影(微速度撮影)して
撮影した画像(jpg)をつないで Linux Motionで遊ぶ 動画(avi)を作りました。
 ハイビスカスの開花 もupしていますが、まだ勉強中なので下手ですけどご覧ください。
 太陽の動きや雲が動いていく様子は普段あまり気にしていないですけど、
あらためて動画にして観るとこれがまた面白いんだなぁ~!

この時にmotionをネットで検索して「防犯カメラ構築」とか「ストリーミング配信」など面白そうな記事があるのを見つけた。
ちょっと読んでみたらとっても面白そうなのでぜひやってみたくなって今回、 motionを使ってストリーミング配信が出来るまでの設定等を、いろんな方のサイトを参考にして作ってみました。(Tamanの備忘録です)
超初心者(PC歴3年3ヶ月,51歳のオヤジ)の作った物ですので、間違いがあると思います。あたたかい目で見てやってください 

Tamanがパソコンを始めた経緯はこちらから  2012年8月20日(月)ブログ 超初心者は固まってしまったのだ・・・ 

Webカメラで防犯カメラサーバー構築  2台のWebカメラで防犯カメラサーバー構築 2013年3月25日作成
   写真をクリックすると防犯カメラ映像が不定期ですが見れる場合もあります・・・
test公開中~!Javaをinstallする場合もあるかな?
セキュリティ警告が出るが心配しないでね! チェックを入れて「実行」するとTaman宅の防犯カメラが見れると思います




詳しく書かれたマニュアルのサイトです。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
途中略
norm 1 ※日本製のカメラはNTSC方式を採用している為らしい
途中略
width  640
height 480           2013年1月18日に変更
############################################################
# 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秒に変更









 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は静止画になっている、なんでかなぁ?

           (2013年1月現在,Google Chromeでも動画で見れます)

  Firefoxはバッチリ動画(4fps)が映りました。雲が動いてるよ! 


 終了は起動したターミナルでCtrl+Cを押す


motion 基本設定ファイル /etc/motion/motion.conf の設定を自分にあった様に変更するが、

motionを停止して設定を変更し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


保存して閉じる


デーモン起動ONの場合は設定ファイルにprocess_id_fileとして定義されているプロセスID記録用のディレクトリは
デフォルトでは無いので以下のコマンドで作成する

  $ sudo mkdir /var/run/motion

  これで $ sudo motion と入力すると motion が起動する


 Motion起動

  $ sudo motion



よし、起動したぞ!うまくいった~                        2013年4月20日(土)追記



Deamon on 設定後の motion.conf ファイルの修正手順だが・・・・当たっているかなぁ~?



 Motion deamon 停止

   $ sudo /etc/init.d/motion stop


 ファイルを修正

   $ sudo nano /etc/motion/motion.conf


 Motion deamon 始動

   $ sudo /etc/init.d/motion start


 Motion 起動

   $ sudo motion





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カメラで東側の空を撮影して
雲が動いているのを確認出来た時、超うれしかった 

クリック 沖縄ライブカメラ 糸満市より中継 1分間隔で更新
      自動で最新画像に切り替わります
       夜はご覧になれませんが、お月様が見れる時もあります



 参考までに
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://taman515.dip.jp/webcame.html です

 ブラウザで確認
  自宅Lan内からは観れない・・・
  WWWサーバテストさんはJava Appletは動作しませんので、自宅近くの家電量販店の展示PCを使って
  作成したhtmlページに IE9 ,Firefox ,Google Chromeでアクセスして確認しました。
  OKバッチリ映ってました!
  ただし、展示PCにJavaがインストールされていない場合は観ることが出来ません 
  お友達のPCで確認が出来るといいですね!
  IEとGoogle Chromeで観れるようになったのはうれしいね 

Tamanからお知らせ
これはあくまでも個人的なメモであり、この通りにやって 不具合が生じても保証の限りではありません(免責事項)





最後に 
=====================================================================================
以下の方々のサイトを参考にしてストリーミング配信が出来ました、ありがとうございます
http://debianj.com/ubuntu/webcam/motion.html
自宅サーバー Debian/Ubuntu/Motionでライブカメラ+動体検知サーバー構築

http://www.bird-soft.net/mt/2009/06/linuxwebmotion_1.htmlBird-Soft
Weblog/LinuxでWebカメラを使う(ストリーミング配信)[motion]

http://papa-net.info/pc/server/linux/fedora14/livecam.htm
Papa-Net/ライブカメラサーバー(motion)

http://blogs.yahoo.co.jp/igproj_fusion/7691801.html
迷途覚路夢中行/サーバーでライブ映像配信〔11〕

http://phantom37383.blog11.fc2.com/blog-entry-731.html
Index of /.Phantom/Ubuntuで監視カメラ

http://netbuffalo.doorblog.jp/archives/3942942.html
監視カメラ(動体検知・メール通知・クラウドへ保存)をUbuntuで構築する


2012年8月11日(土)作成  2013年1月31日修正



Tamanのホーム

Copyright(C)2011 all rights reserved.