www.smiyasaka.com は、 2022 年 11月から Oracle LInux 8.X にOSを変更しました。

● fswebcam で 定点カメラ( Web ライブカメラ )を実現する ●

アクセス数 昨日 4 今日 5
  累計 28,750   

このページは、私が、定点カメラの映像を表示したいために、 fswebcam のインストール・ 設定に関し、色々な関連サイトを検索し、試行錯誤して上手く動作した結果を忘備録として纏めました。

現在 Linux のシステムは、Oracle Linux 8.9  64bit を使用しています。
なお、カメラは、Logicool のUVC 対応 USB カメラを使用しています。

※※ 下の映像は、fswebcam で実現した 30 秒 更新の定点カメラの映像です。 ※※
2021年 6月 fswebcam のすべてのバージョンで文字化けを解消させる事が出来ました。
fswebcam は、最新版バージョンの fswebcam-20200725 を使用しています。

※ 注 意 事 項 ※ を見る[ここをクリック]

目    次
[○○○○]のクリックで、その内容が目次の下に表示、再度クリックで非表示になります。

   ※ [ 総てを表示する ] ※ [ 総てを表示する 非表示 ] ※
   1. [ 使ったカメラ ] [ 使ったカメラ 非表示 ]
   2. [ fswebcam rpm ファイルでのインストールと設定 ] [ fswebcam rpm ファイルでのインストールと設定 非表示 ]
   3. [ 撮影・保存を実行するプログラム(シェルスクリプト)の作成 ] [ 撮影・保存を実行するプログラム(シェルスクリプト)の作成 非表示 ]
   4. [ 定点カメラとして、1分ごとに、写真を撮影させる設定 ] [ 定点カメラとして、1分ごとに、写真を撮影させる設定 非表示 ]
   5. [ ライブ定点カメラとして、ホームページが公開できるようにする ] [ ライブ定点カメラとして、ホームページが公開できるようにする 非表示 ]
   6. [ 10分毎の写真データの保存・消去 ] [ 10分毎の写真データの保存・消去 非表示 ]
   7. [ fswebcam でUSBカメラの明るさの補正方法 ] [ fswebcam でUSBカメラの明るさの補正方法 非表示 ]
   8. [ fswebcam ソースファイルでのインストールと文字化けの対策 ] [ fswebcam ソースファイルでのインストールと文字化けの対策 非表示 ]
   9. [ 定点カメラの設置位置の工夫 ] [ 定点カメラの設置位置の工夫 非表示 ]
   10. [ お断り・表示画面 ] [ お断り・表示画面 非表示 ]
   11. [ ミニ PC を使ってネットワークカメラシステム( 10 秒更新 )の作成 ] [ ミニ PC を使ってネットワークカメラシステム( 10 秒更新 )の作成 非表示 ]

 0. 定点カメラを簡単に実現する方法

方法は、ネットワーク対応のカメラを使うことです。このカメラは、同一 LAN 内では、動画を簡単に再生できます。
ただし、同一の LAN 内からの公開は、出来ないようです。? しかし、静止画なら実に簡単に、出来ます。
その方法は、カメラ自身に、サーバ機能があり、その中の機能で スケジュールによる静止画の送信があり、FTP 機能で決まった時間ごとに指定した PCへ静止画を送出してくれることを 利用すると実に簡単に定点カメラが実現してしまいます。
ホームページ側での表示処理は、ただ書き込まれた jepgデータを指定するだけと、送られてくる時間間隔に合わせたデータ更新だけの処理で済みます。
インストールとかCRONTAB等難しい設定は、一切いりません。
CRONTABでは、最低の間隔は、1分ですが、1分以下での更新が可能になります。
(私のホームページでは、PC の負荷を考慮して30秒で静止画の更新をしています。)

私のホームページで、紹介していますので、見てください。その他の情報は、「親父の部屋」 で紹介しています。

1. 使ったカメラ

UVC(USB Video Class) 対応Webカメラ(BUFFALO 200万画素Webカメラ BSW20K06HBK) フォー カス固定 ( 130万画素よりはるかに鮮明です。当初は、ELECOMの130万画素を使用していまし た。) UVC対応のカメラでしたら、必ず認識すると思います。 認識の確認は、 cat /proc/bus/usb/devices のコマンドを実行し、 "・・・USB PC Camera"の文字があれば カメラは、認識されています。 (下記に、詳細を記述しています。)

参考:カメラは、近距離では、30万画素くらいでも良いのですが、風景では、200万画素以上 の 固定焦点の物を選んだ方が良いようです。

フォーカスのあるカメラは、風景の撮影では、ピントがあまくなります。

※ 白とびするUSBカメラに注意 ※ ( ※ 白とび とは、映像が、白ぽっくつぶれてしまう こと ※ ) BUFFALOのBSW20K06Hのカメラは、屋外を撮影しても、白とびしません ( 画像がチ ョット暗いのが気になります。) が、ELECOMのUCAM-DLB200TAWHのカメラは、白とびが激しく オートフォーカスさえまともに動きません。 130万画素のUCAM-DLU130HWHも白とびします。

どのカメラも室内撮影に関しては遜色(そんしょく)無く綺麗な映像が撮れます。

明るさの補正をしてみましたが、BUFFALOのカメラの様に綺麗な画像には、成りませんでした。
BUFFALOのBSW20K06Hのカメラ映像は、チョット暗いので、+10% 程明るさ・コントラストを補 正してみました。

補正の仕方は、「 7. fswebcam でUSBカメラの明るさの補正方法 」で紹介しています。

※ Vine Linux6.1 でのUVC対応カメラの疑問 ※

同じUVC対応のカメラが、Vine Linux6.1では、ELECOMのカメラだけ動作し、 BUFFALOのカメラは、パターンエラーになり、動作しないことが、判明しました。
( 一回目の起動時だけは、正常に動作し、その後は、すべてエラーになります。)

H24.11.02 ELECOM UCAM-DLA200HWH 手動フォーカス・200万画素を試験的に購入。
Vine Linux6.1 で動作しました。BUFFALOと比較すると劣りますが、白とびも少ないです。
この機種は、妥協すれば使用出来そうです。難点は、フォーカスが、シャープすぎること。
ELECOMの三機種(UCAM-DLB200TAWH,UCAM-DLA200HWH,UCAM-DLU130HWH)が、 Vine Linux6.1 動作することから、ELECOMのUVC対応のカメラは、すべて動作するのではないかと思われま す。
他のLinuxで試したところ、CentOS6.1~6.4、Fedora13~17でも同じ現象になりました。
私の勝手の推測ですが、最新のカーネルのバージョンでは、BUFFALOのカメラは、使えないようです。
※※ 参考ですが、motionの動画も試しましたが、同じでした。※※

H25.04.06 追加

Logicool C270 というUSBカメラを CentOS 6.4 で動かしてみました。
動作結果は、OK でした。ただし、輝度・明るさを Brightness=65% と Contrast=15% 位に調整しないと綺麗な映像にはなりません。 ELECOM のカメラ様に、白とびは、無いようです。

H27.01.12 追加

Logicool C270 のカメラは、固定フォーカスですが、遠距離では、再調整が必要の様です。
( 今回、2個購入したら2個とも近距離は、良いのですが、遠距離では調整不良品でした。)
下記は、フォーカスを調整する方法です。分解すると保証がきかないのであくまでも自己責任で行ってください。

[ Logicool HD Webcam c270 カメラ フォーカス調整方法 ] の詳細は、
            [ここをクリック]してください。

H27.03.12 追加

USB カメラの寿命に関しての報告
私のサーバ機では、Logicool C270 を使用していますが、2年ほどで輝度調整が時々不調になる現象が発生しました。
また、色合いも「青」が弱くなって全体的に黄色が強くなってきました。
今現在のカメラは、令和5年の5月に交換したもので映像を発信しています。 青空が綺麗に撮影されています。
下記の写真は、新旧のUSBカメラ( C270 )で雲の多い日に同時に同じ風景を撮影した写真です。 雲の見え方の違いが良く分かると思います。

         新しいUSBカメラの映像       2年ほど使用したUSBカメラの映像
      
cameradata.jpg  stop1.jpg

H29.08.06 追記 Logicool C270 のカメラ 平成 27 年 3 月に使用開始したカメラが、本日ダウンしました。 寿命としては、1 ~ 2.5 年くらいです。再使用は出来るので予備機( 何時ダウンするかの危険がありますが )としています。
令和 5 年 5 月 31 日 Logicool C270 のカメラを C270n に交換しました。
綺麗な映像になりました。(フォーカスの調整は、やはり必要でした。)


2. fswebcam rpm ファイルでのインストールと設定

 CentOS でのインストールは、別ページで紹介していますので、メインメニューから、  各ページにジャンプして参照してください。

   ● Vine Linux で fswebcam rpm ファイルをインストールする。

fswebcamは、静止画を一回撮影するだけの機能しかないのですが、まずは、インストールします。

○ インストールの準備
fswebcam-20140113.tar.gz は、[ ここをクリックして ] ダウンロードしてください。
fswebcam-20100622.tar.gz は、[ ここをクリックして ] ダウンロードしてください。
fswebcam-20200725.tar.gz は、[ ここをクリックして ] ダウンロードしてください。

私の場合、windows7側でダウンロードして、FFFTPで、Linux側へ転送し、操作は、windows 7 側から TeraTerm で行いました。
インストールの前に下記二つのモジュールをインストールします。
直接インストールモジュールをrpm -ivh gd-2.0.35-5vl5.i386.rpmをインストールするか、
  apt-get update
or yum update
  apt-get install gd
or yum install gd <---- これが無いとエラーがでます。
で、インストールします。

○ インストールコマンド
  rpm -Uvh fswebcam-20070108-1.i386.rpm


※※ fswebcom のインストールの詳細 ※※

特に「 依存関係のあるモジュール 」の事前インストールについては、良く確認してください。

○ 動作確認
 下記のコマンドを実行する。
/usr/bin/fswebcam -p YUYV --top-banner --line-colour '#FF000000'\
--banner-colour '#FF000000' -S 6 -r 640x480\
--save /home/(ユーザー名)/jpagdata.jpg

その結果、下記の様なメッセージがでれば、動作OKです。
保存先は、最終行に記述されています。
撮影結果は、jpagdata.jpgのファイル名で保存されているので、開いて確認します。

--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
--- Capturing frame...
Skipping 6 frames...
Capturing 1 frames...
Captured 7 frames in 0.20 seconds. (35 fps)
--- Processing captured image...
Putting banner at the top.
Setting banner line colour to #FF000000.
Setting banner background colour to #FF000000.
Could not find/open font
Could not find/open font
Writing JPEG image to '/home/miyasaka/jpagdata.jpg'

○ fswebcamのコマンドオプションの説明。
--top-bannerタイトル・タイムスタンプは、上部に表示されます。
--bottom-banner   タイトル・タイムスタンプは、下部に表示されます。
-dデバイス(初期値は、/dev/video0が設定されているので不要
2台目は、--device '/dev/video1' と書きます。)
-p動画フォーマット(YUYV等)
--top-bannerバナーを画面上部に(デフォルトは下部) 非表示は--no-banner
--line-colour'カラーコード' デフォルトは赤、透明は#FF000000
-Sキャプチャ開始フレーム
-r解像度
--font   "フォントパス:フォントサイズ" 明示しないとバナー部に文字が表示できません。
(VineLinux5 のパス /usr/share/fonts/alias/TrueType/MaruGo-Medium.ttf)
--save/home/(ユーザー名)/webcam/test.jpg  保存先パス

「-S」の指定なしで撮影するとホワイトバランスの調整が間に合わず映像が暗くなります。
 Webカメラの特性にもよりますが最低でも5~10フレーム位はおいたほうがいいでしょう。
高級カメラでないので、これでも、ホワイトバランスが崩れるときが、あります。
私の場合、8フレームにしています。

他に、次の4つのホントがあります。
1.Mincho-Medium.ttf, 2.Gothic-Medium.ttf, 3.FutoMin-Bold.ttf, 4.FutoGo-Bold.ttf
下記の写真は、各ホントで、表示した時の文字です。

FutoGo-BoldFutoMin-Bold
FutoGo-Bold FutoMin-Bold
Gothic-MediumMaruGo-Medium
Gothic-Medium MaruGo-Medium
Mincho-Medium
Mincho-Medium

※※ 参考 ※※
CentOS 5.8, 5.9,Scientific Linux 5.9, Momonga Linux7 では、パスが --font '/usr/share/fonts/ja/TrueType/kochi-gothic-subst.ttf:32'に、なります。
フォントは、他に kochi-mincho-subst.ttf があります。 Fedora, CentOS 6.X では、パスが --font '/usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf:32'に、なります。

H25.03.11現在、私が気に入って使用しているフォントは、VL-Gothic-Regular.ttfです。 必要な方は、http://www.smiyasaka.com/Font/VL-Gothic-Regular.ttf でダウンロー ドしてください。

※ チョットしたアイデア ※
フォントデータをホームページのデータと同じディレクトリに保存し、そこを参照するよ うにするとすると OS を換えてもパスを換える必要が無くなり便利になります


3. 撮影・保存を実行するプログラム(シェルスクリプト)の作成

組み込んだ機能
  1.  夜間は、停止させるので、断り写真を表示させるようにする。
  2.  カメラ故障時に断り写真を表示させるようにする。
  3.  毎日12時の写真をその日の年月日のファイル名で保存する。
 風景写真のスライドショー用として使用する。
  4.  10分毎の写真をその日の月日時分のファイル名で保存する。
 天気写真のスライドショー用として使用する。
  5.  撮影時の年月日時刻を右下に表示させるようにする。
  6.  最新のアメダス情報(我が地区の天気情報)を写真の左下に表示させるようにする。
  7.  日照時間等から、天気区分( 快晴・晴・晴曇・曇・雨+雨量 )を表示するようにする。

最新のアメダス情報・撮影時の年月日時刻は、こんな具合になります。
( 17時から 6時の間は、表示しません。了承ください。 )

以下の記述をコピーすれば使用できます。(ドメイン)は、あなたの環境に合わせてください。
ファイルのパスは、VineLinux 5の場合です。
webcamというディレクトリィをホームページと同じところに、作り下記のシェルスクリプトを webcam.shというファイル名で書込みます。

○ fswebcamのコマンドオプションの設定

  -r 1280x1024          解像度は、カメラの最高解像度にします。
  --line-colour '#FF000000'    こうしないと、下部に赤線がでます
  --banner-colour '#FF000000'  こうすると、上の線が消えます
  --font '/usr/share/fonts/alias/TrueType/MaruGo-Medium.ttf:40' フォントの指定
  --title "四国の宮坂家のライブカメラ" 画面の左下にタイトルがでます。
  ※※ fswebcam-20070108-1.i386.rpm では、日本語の文字化けが起こります。
  fswebcam-20091224, 20100401. 20100622 の tar.gz は、日本語の文字化けは、
  起こりません。
  --timestamp '%Y-%m-%d %H:%M (%Z)'の(%Z)は、タイムゾーン(JST)が表示します。

下記は、撮影して保存する部分だけのプログラムです。
1分毎の起動は、crontab で行っています。



#!/usr/bin/sh   <---- CentOS 7.X では、#!/bin/sh になります。

#---------------------------------------------------------------------
www="/var/www/html/www.smiyasaka.com/"
INFILE="${www}/webcam/camdata.jpg"      # 保存先
#-----------------------------  Main START ---------------------------
#
Title="タイトル"
#---------------------------------------------------------------------
  /usr/bin/fswebcam -p _
     YUYV --bottom-banner --line-colour '#FF000000'
     --banner-colour '#FF000000' -S 2 -r 960x720\
     --title ${Title}\
     --font '/var/www/html/www.smiyasaka.com/\
     VL-Gothic-Regular.ttf:24'\
     --text-colour '#FFFF00'\
     -s Brightness=65%\
     -s Contrast=15%\
     -timestamp '%Y-%m-%d %H:%M:%S' --jpeg 95 --save ${INFILE}
#---------------------------------------------------------------------


○ 下記が、私が作成した撮影・保存を実行するプログラム(シェルスクリプト)です。

H25年7月末から、タイトル文字に私の地区の気温と天気を書込むように変更しました。 使用する時には、USB カメラの認識情報をあなたのカメラに合わせてください。
下記のプログラムでは、

BUFFALO USB Camera BSW20K06H
ELECOM USB Camera UCAM-DLA200HWH, UCAM-DLU130HWH
Logicool USB Camera C270sCW

の機種は、認識して動作します。

なお、天気情報の取得方法については、公開していませんので研究してみてください。

[ CentOS 5.X, 6.X 用プログラム ] の詳細は、
            [ここをクリック]してください。

2022. 4 月に改定したプログラム( 30秒撮影・処理の分割 )

CentOS Strem 8 に fswebcam-20200725.tar.gz をインストールし、USB カメラは、Logicool USB Camera C270sCW を使用して下記のプログラム(シェルスクリプト)で定点カメラを運用しています。
このプログラムは、if then else を数多く使用しているので分かりやすくするため、
else と fi が、何処の if からかコメントを入れています。
( /var/www/html/www.smiyasaka.com は、httpd.conf での、DocumentRoot のパスです。)

[ CentOS 7.X, CentOS Stream 8, Red Hat 系 8.X 用プログラム ] の詳細は、

            [ここをクリック]してください。

○ 文字フォントの指定

文字を表示させるに、使用文字のフォントを指定する必要があります。
 
VineLinux5でのパスは、/usr/share/fonts/alias/TrueType/MaruGo-Medium.ttf
  CentOS5でのパスは、/usr/share/fonts/ja/TrueType/kochi-gothic-subst.ttf
  --font '/usr/share/fonts/alias/TrueType/MaruGo-Medium.ttf:32'の
:32 は、文字の表示サイズです。
( タイトルとタイムスタンプでは、文字の表示サイズが違うので釣合いのとれるサイズにしてください。)
現在は、フォントデータをホームページのデータと同じディレクトリに保存して使用しています。
OS を替えてもパスを替えることが無くなります。
  右下の位置指定は、--bottom-banner 文字色(白)の指定は、--text-colour '#FFFFFF'

○ 表示フォームの指定

  --timestamp '%Y-%m-%d %H:%M (%Z)'の(%Z)は、タイムゾーン(JST)が表示します。
  このように、すると yyy-mm-dd HH:MM (JST)と表示します。

○ catコマンドの実行結果

  #cat /proc/bus/usb/devices
  ( CentOS 7.0では、cat /sys/kernel/debug/usb/devices になります。)

 T: Bus=05 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
省略
 D: Ver= 2.00 Cls=ef(unk. ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
 P: Vendor=2084 ProdID=0009 Rev=10.11
 S: Manufacturer=Syntek
 S: Product=BUFFALO BSW20K06H USB PC Camera

 S: SerialNumber=STK00001
 C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
省略

○ 認識の有無の判定は、grepコマンドで下記の様にします。


1.) 判定手法 その 1

( " S: Product=BUFFALO BSW20K06H USB PC Camera "の文字列があるかで、判定します。)

USB1=$(grep "S: Product=BUFFALO BSW20K06H USB PC Camera" /var/www/html/
(ドメイン)/webcam/ketsuka.txt)


USBカメラを付けた時と付けない時に、 catコマンド( cat /proc/bus/usb/devices )で取得した内容を解析してUSBカメラの認識がどの様な内容になっているかを確認します。

USBカメラが、変われば、USBカメラの認識の認識結果も変わりますので、 grepコマンドで判定する為の文字列も使用するカメラに合わせる必要があります。

ちなみに、Logicool USB Camera C270sCW の USBカメラの場合、判定用文字列は、

"S: SerialNumber=E981E810"
予備の Logicool USB Camera C270 は、
"S: SerialNumber=49333B40" です。

ELECOM USB Camera の USBカメラの場合、判定用文字列は、
UCAM DLA200H ---> "S: Product=Venus USB2.0 Camera"
UCAM DLU130H ---> "S: Product=USB2.0 Camera"

になっています。

2.) 判定手法 その 2

H26.11 からは、lsusbというコマンドでUSBカメラの接続情報を取得する方法に変更しました。
( CentOS 5.X では、lsusbというコマンドが使えませんので「その 1 」の方法を使用して下さい。)
更に、コマンドの実行結果は、テキストファイルに書込むのを止め直接変数に書込むようにしました。
ちなみに、Logicool USB Camera C270sCW の USBカメラの場合、判定用文字列は、


"Bus 001 Device 003: ID 046d:0825 Logitech, Inc. Webcam C270"

ELECOM USB Camera の USBカメラの場合、判定用文字列は、

"Bus 001 Device 006: ID 056e:700a Elecom Co., Ltd"

になっています。   判定部分のプログラムは、こんな具合に簡素に成りました。



  # CentOS 6.X, CentOS 7.0 共通
   USB=$(/usr/bin/lsusb)   <---- コマンドの実行は、フルパスで書きます。
  # Logicool USB Camera C270sCW   フルパスの確認は、コマンド locate lsusb
   USB1=$(echo ${USB} | grep "Logitech")   で確認できます。
  if [ ! -z "${USB1}" ]
   then
     echo "Logicool"    <---- 手動起動の時の確認用です。
  fi
  #
  # ELECOM USB Camera
   if [ -z "${USB1}" ]
    then
     USB1=$(echo ${USB} | grep "Elecom")
   if [ ! -z "${USB1}" ]
    then
     echo "ELECOM"   <---- 手動起動の時の確認用です。
    fi
   fi
  #
  # USBカメラが動作している時には、抽出文字列が$USB1にセットされる。
  #
   if [ -z "${USB1}" ]
     then
     USB カメラが接続されていない時の処理をする。
    exit
   else
     以下に、webcam の処理プログラムを記述する。
   fi


● 断り写真・故障時写真の作成・保存
作成は、Excelのワードアート文字を使用しデザインしたものを windows の アプリ [ 切り取り & スケッチ ] で、切取って jpeg の写真データにして使用しています。

断り写真は、適宜作成し、stop.jpgという名でwebcamのフォルダに保存しておきます。
故障断り写真は、適宜作成し、ngcamera.jpgという名でwebcamのフォルダに保存しておきます。


4. 定点カメラとして、1分ごとに、写真を撮影させる設定

( /var/www/html/www.smiyasaka.com は、httpd.conf での、DocumentRoot のパスです。)
  ○ ディレクトリーをwebcamに移動し、権限・オーナーを変更します。
    #cd /var/www/html/www.smiyasaka.com/webcam/
    # chmod 755 webcam.sh
    # chown -R (ユーザー名):(ユーザー名) webcam.sh
  ○ crontabへの登録
    作成したシェルスクリプトを6時から17時の間、1分毎に実行するようにします。
#crontab -e
*/1 6-18 * * * /var/www/html/www.smiyasaka.com/webcam/webcam.sh > /dev/null 2>&1

タイトルの日本語が文字化けするときには、下記の様にしてください。

*/1 6-18 * * * /var/www/html/www.smiyasaka.com/webcam/webcam.sh …………
↓↓↓
*/1 6-18 * * *
export LANG=ja_JP.eucJP; /var/……/webcam.sh > /dev/null 2>&1

> /dev/null 2>&1 を必ず付けてください。これを付けないと、実行した時のメッセージが、 root 宛てのメールになって保存され、沢山たまります。

※ cronへ登録 6時から18時の間、1分毎に実行させます。(終わりを18時しているのは、 17時になってから、断り写真 stop.jpg をライブ写真の替わりに設定するため。)


5. ライブ定点カメラとして、ホームページが公開できるようにします

ホームページの写真等の再表示は、同一ファイル名の時は、 キャシュされたデータが表示されるので、元の写真が更新されても、ライブ写真になりませんので、 ホームページを表示する側で強制的に、データの更新をさせる必要があります。

その方法は、画像を表示するホームページの<head>と、</head>の間に、

<meta http-equiv="Refresh" content="○○"> の 一行を入れるだけです。

これで、○秒毎にページデータが、強制的に更新され、ライブ定点カメラが、実現できます。

私の場合、>更新時間 ○○ は、30 秒にしています。

● 全体のディレクトリ構成例は以下のとおりです(カッコ内はアクセス権の設定値)。
    #【ディレクトリ構成】
    #------------------------------------------------------------
    #|
    #|  /var/www/html/(ドメイン)/webcam.html
    #||
    #|+-- webcam      [777]
    #| +-- webcam.sh [755]
    #| +-- camdata.jpg
    #| +-- stop.jpg
    #| +-- ngcamera.jpg
    #| +-- ketsuka.txt [666]
    #| +-- webcamday [777]
    #|
    #------------------------------------------------------------
○ ドメイン・ユーザー名等は、あなたの環境に合わせて下さい。
総ての設定は、私の環境(VineLinux5.2)での、設定値です。

● ホームページの記述は、下記の通りです。参考にしてください。


  <head<title>四国の宮坂家 Live Camera</title><!--2011/11/11 作成-->
  <link rel="shortcut icon" href="favicon.ico">
省略
<meta http-equiv="Refresh" content="30">
  </head>
  <style type="text/css"><!--
   /* 表示領域 枠線設定 */
  table.wakusen {border: solid 1px #649633; border-collapse: collapse;}
  --></style>
  </head>
  <body>
  <div>
  <table class="wakusen" border="1" width="100%"><col width="100%">
  <tr>
  <td align="left" valign="top">
  <img alt="表示領域" src="./webcam/camdata.jpg" width="394" height="260" title="鬼北町の今の風景写真を表示中">
  </td>
  </tr>
  </table>
  </div></body>
  </HTML>


上記の方法でホームページを公開するとページ全体が 30 秒ごとに更新されるので、 パソコンによっては、チラツキの発生や処理が遅い時には、画面全体がゆっくり更新されてしまうので良くありませんでした。
それらを少しでも改善する為に現在では、iframe を使用して映像の部分だけ更新させる方法に変更しました。

iframe を使用する利点は、30 秒ごとの画面更新が表示領域だけになるので、チラツキが軽減されることです。
下記にその方法の要点を紹介します。


※※ 本体ページの HTML ※※


省略
  
本体ページでは、30 秒毎の画面更新は、不要になります。
      <meta http-equiv="Refresh" content="30">
  </head>
  
  <body>
  <div>
  <table border="0" width="100%"><col width="100%">
  <tr><td align="left" valign="top">
  
iframe の枠線・スクロールバーは、表示なし・余白なしにします。
  <iframe src="./○○○○.html" frameborder="0" scrolling="no" marginwidth="0"
     marginheight="0" width="497" height="366">表示できません。</iframe>
  </td></tr>
  </table>
  </div></body></HTML>

  
※※ iframeからリンクするページ(○○○○.html)の HTML ※※
  
写真の枠線は、こちら側で設定します。
省略
  
30 秒毎の画面更新は、ここで設定します。
    <meta http-equiv="Refresh" content="30">
  </head>
  <style type="text/css"><!--
   /* 表示領域 枠線設定 */
  table.wakusen {border: solid 1px #649633; border-collapse: collapse;}
  --></style>
  </head>
  <body>
  <div>
  <table class="wakusen" border="0" width="100%"><col width="100%">
  <tr><td align="left">
  <img src = "./webcam/camdata.jpg" width="494" height="362"
     title="鬼北町の今の風景写真を表示中" alt="鬼北町の今の風景写真を表示中>
  </td></tr>
  </table>



6. 10分毎の写真データの保存・消去

昨日の記録写真をバックアップし、削除し、更に、8日前保存データを削除します。
/var/www/ のルート上に、下記のシェルスクリプトを作ります。私の場合、
cd /var/www/system/ としています

#!/bin/sh
#----------------------------------------
# 8日前の保存データを削除する。
#----------------------------------------
DAY_8AGO=`/bin/date --date '8day ago' +%Y%m%d`  # yyyymmdd
AGO_8File="DAY$DAY_8AGO"
rm -rf /var/www/html/FhotoDay/${AGO_8File} > /dev/null 2>&1
#----------------------------------------
# 昨日の日付で記録写真を保存する。
#----------------------------------------
DAY_AGO=`/bin/date --date '1day ago' +%Y%m%d`  # yyyymmdd
#echo "${DAY_AGO}"
AGO_File="FhotoDay/DAY${DAY_AGO}"# DAYyyyymmdd
cp -rf /var/www/html/www.smiyasaka.com/webcammin
/var/www/html/www.smiyasaka.com/${AGO_File}
#----------------------------------------
#   写真データ(*.jpg)を総て削除する。
#----------------------------------------
p=`find /var/www/html/www.smiyasaka.com/webcammin/ -name "*.jpg" | cut -f 1 -d ' '`
# 区切り=" "をカットして、抽出ファイルを無条件に1つずつ削除していく
for i in ${p}
do
   rm -fr ${i}
done
#

○ ディレクトリーをsysytemに移動し、権限・オーナーを変更します。
   chmod 755 JPGdata_del.sh
○cron に登録、5時に保存・削除するようにします。
   crontab -e
   0 5 * * * /var/www/system/JPGdata_del.sh


7. fswebcam でUSBカメラの明るさの補正方法

○ fswebcam でUSBカメラの明るさの補正方法は、-s のオプション設定でします。
輝度・コントラストの補正は、同時にすることが可能です。
設定は、0 ~ 100% の範囲です。補正は、現在の設定値を確認してから行ってください。

 補正例

  p="/var/www/html/www.smiyasaka.com/webcam/camdata.jpg"
  /usr/bin/fswebcam -p YUYV --bottom-banner --line-colour '#FF000000'\
--banner-colour '#FF000000' -S 8 -r 1280x1024\
--font '/usr/share/fonts/alias/TrueType/MaruGo-Medium.ttf:40'\
--text-colour '#FFFFFF'\
-s Brightness=55%\  
<---- 明るさ
-s Contrast=60%\   
<---- コントラスト
--timestamp '%Y-%m-%d %H:%M (%Z)' --jpeg 95 --save $p

鮮やかさ・色合い・ホワイトバランス・ガンマ・ゲインの補正も出来るようです。

補正を入れての実行結果


--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Setting Brightness to 12 (54%).  
<---- 明るさ
Setting Contrast to 10 (60%).   
<---- コントラスト
--- Capturing frame...
Skipping 6 frames...
Capturing 1 frames...
Captured 7 frames in 0.80 seconds. (8 fps)
--- Processing captured image...
Putting banner at the bottom.
Setting banner line colour to #FF000000.
Setting banner background colour to #FF000000.
Setting font to /usr/share/fonts/alias/TrueType/Mincho-Medium.ttf:40.
Setting banner text colour to #FFFFFF.
Setting timestamp "%Y-%m-%d %H:%M (%Z)".
Setting output format to JPEG, quality 95
Writing JPEG image to '/var/www/html/www.smiyasaka.com/webcam/camdata.jpg'.

○ fswebcam の現在の設定値の確認は、下記コマンドで行います。

# fswebcam --list-controls

設定値の表示例


--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Available Controls Current Value Range
------------------ ------------- -----
Brightness12 (54%) -126 - 126   
<--- 明るさ
Contrast 10 (60%)    1 - 16   
<--- コントラスト
Saturation16 (31%)   1 - 48   
<--- 鮮やかさ
Hue 0 (50%)      -10 - 10   
<--- 色合い
White Balance Temperature, Auto True   True | False 
<--- ホワイトバランス
Gamma  1       1 - 6    
<--- ガンマ
Gain  0          0 - 7    
<--- ゲイン
Adjusting resolution from 384x288 to 352x288.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
There are unsaved changes to the image.

※ 参考情報 ※
USB カメラの輝度・明るさ・解像度の設定値
( 私のサーバ機で使用している設定値です。)

  BUFFALO BSW20K06H 200万画素

    
CentOS 5.9、Scientific Linux 5.9 の時には、このカメラを使用してい ます。
    このカメラのオートフォーカスは、遠近両方に合うようです。


    Brightness=55% Contrast=60% 1280x1024

  ELECOM UCAM-DLA200HWH 200万画素

    
全体的に絵が鮮明でないので使用していません。
    このカメラのオートフォーカスは、あまい感じです。


     Brightness=30% Contrast=15% 1280x1024

  Logicool C270 120万画素

    
CentOS 6.X からは、このカメラを使用しています。
    このカメラの固定フォーカスは、遠方に合うようです。
    Brightness=65% Contrast=15% 1280x960


8. fswebcam ソースファイルでのインストールと文字化けの対策

○ fswebcam-20091224 ~ fswebcam-20200725をソースファイルでインストールしてみました。

依存するパッケージが、3~5個要ります。

それらのインストールは、yum か、直接ダウンロードします。
yum の時は、


yum -y install gd gd-devel

でします。これでも不足パッケージが有る時には、下記を追加インストールします。

yum -y install libXpm libjpeg-turbo-devel libXpm-devel

直接ダウンロードは、下記から、出来ます。パッケージ名をクリックしてください。

① CentOS 5.X, Sceintific Linux 5.X 等のバージョンの時 [ i386.rpm のパッケージ ]

   gd-2.0.33-9.4.el5_4.2.i386.rpm
   libXpm-devel-3.5.5-3.i386.rpm
   gd-devel-2.0.33-9.4.el5_4.2.i386.rpm

3個の i386.rpm のパッケージは、依存関係があるので下記の順序でインストールしてください。

  cd /usr/local/src/; \
  rpm -ivh gd-2.0.33-9.4.el5_4.2.i386.rpm; \
  rpm -ivh libXpm-devel-3.5.5-3.i386.rpm; \
  rpm -ivh gd-devel-2.0.33-9.4.el5_4.2.i386.rpm

② CentOS 6.X 等のバージョンの時

[ i686.rpm のパッケージ ]

  libXpm-3.5.10-2.el6.i686.rpm
  libjpeg-turbo-devel-1.2.1-1.el6.i686.rpm
  libXpm-devel-3.5.10-2.el6.i686.rpm
  gd-2.0.35-11.el6.i686.rpm
  gd-devel-2.0.35-11.el6.i686.rpm

5個の i686.rpm のパッケージは、依存関係があるので下記の順序でインストールしてください。

  cd /usr/local/src/; \
  rpm -ivh libXpm-3.5.10-2.el6.i686.rpm; \
  rpm -ivh libjpeg-turbo-devel-1.2.1-1.el6.i686.rpm; \
  rpm -ivh libXpm-devel-3.5.10-2.el6.i686.rpm; \
  rpm -ivh gd-2.0.35-11.el6.i686.rpm; \
  rpm -ivh gd-devel-2.0.35-11.el6.i686.rpm

③ CentOS 7.0 x86_64 のバージョンの時

( このバージョンでは、fswebcam-20100622 を使用します。)
( 事前に yum groupinstall て "Base" と "Additional Development" を実行している時 )
[ x86_64.rpm のパッケージ ]


  fswebcam-20100622.tar.gz
  gd-progs-2.0.35-26.el7.x86_64.rpm
  gd-devel-2.0.35-26.el7.x86_64.rpm

  cd /usr/local/src; \
  rpm -Uvh gd-progs-2.0.35-26.el7.x86_64.rpm; \
  rpm -Uvh gd-devel-2.0.35-26.el7.x86_64.rpm

※ H26.01.28 追記

CentOS 6.5 で update 後、
libjpeg-turbo-devel-1.2.1-1.el6.i686.rpm のインストールで依存性のエラーが出る時 には、libjpeg-turbo-devel-1.2.1-3.el6_5.i686.rpm をここから、ダウロードして入れ 替えてみてください。
私のサーバ機での検証では、上手くいきました。


④ CentOS Stream 8, Red Hat 系 8.X のバージョンの時

事前にインストールすべきパッケージはありません。

○ fswebcam-20200725のインストール

  tar zxvf fswebcam-20200725.tar.gz; \
  cd ./fswebcam-20200725
  ./configure --prefix=/usr

以下で、終われば、OK
   ------------------------------------------------------
  checking for gdImagePngEx in -lgd... yes

  Buffer type ........... 16 bit
  PNG support ........... yes
  JPEG support .......... yes
  Freetype 2.x support .. yes
  V4L1 support .......... yes
  V4L2 support .......... yes

  configure: creating ./config.status
  config.status: creating Makefile
  config.status: creating config.h
  ------------------------------------------------------
  
make && make install
  以下で、終われば、OK
  ------------------------------------------------------
  mkdir -p /usr/bin
  mkdir -p /usr/share/man/man1
  install -m 755 fswebcam /usr/bin
  install -m 644 fswebcam.1.gz /usr/share/man/man1

タイトルに日本語を使うと文字化けする( cronで実行時 )という、問題が発生しました。

解決方法は、下記に追記しました。

Linux は、Scientific Linux 5.9 を使用、文字コードをeucコードにしても、だめでした。

四角が、文字分表示、漢字に変換されないようです。ただ、直接コマンドで、実行すると漢字が表示します。
cron とコマンドどちらも、root 権限のはずだが????


他のバージョンの fswebcam を試してみました。文字化けの結果は、下記のとおりです。

各バージョンの fswebcam のインストールテストは、Linux は、Scientific Linux 5.9 で fswebcam-20110717 と同じ条件でしました。
参考データ : CentOS 6.4, 6.5 でも、同じような結果になりました。


  fswebcam-20091224.tar.gz タイトルの日本語OK
  fswebcam-20100401.tar.gz タイトルの日本語OK
  fswebcam-20100622.tar.gz タイトルの日本語OK
  fswebcam-20101118.tar.gz タイトルの日本語NG
  fswebcam-20110717.tar.gz タイトルの日本語NG
  fswebcam-20140113.tar.gz タイトルの日本語NG
  fswebcam-20200725.tar.gz タイトルの日本語NG


ソースファイルのダウンロードは、ファイル名のクリックでダウンロードできるようにしてあります。


※ インストールした fswebcam-〇〇〇〇 の削除 ※

cd /usr/local/src;\     <---- インストールしたパス
rm -rf fswebcam-〇〇〇〇;\  
<---- インストールした fswebcam
rm -f /usr/bin/fswebcam;\
rm -f /usr/share/man/man1/fswebcam.1.gz

ですべて削除されます。

2021.06.17 上記の対策方法がやっと判明しました。

文字化けの確認は、CentOS Stream 8 , CentOS 7.X と Red Hat 系の Linux 8.X で、日本語フォント( VLゴシック )を dnf or yum でインストールする事で文字化け解消できました。

但し、問題点もあります。それは、文字フォントオプション( --font )が、文字サイズ指定以外無視されることです。
下記は、表示例です。

tenki and time

※※ 注意事項 ※※

fswebcam のオプション --title の文字設定は、必ず 文字コード UTF-8 に変換してから設定してください。
但し、システムの文字コードが UTF-8 の時は、変換は不要です。

設定例

# nkf -w : 変換コード UTF-8 指定
Title=$(echo "文字列" | /usr/local/bin/nkf -w)
        途中省略
    /usr/bin/fswebcam -p YUYV………
        途中省略
    --title ${Title}\

※※ 参考情報 ※※

日本語フォントがインストールされる場所は、CentOS 場合 /usr/share/fonts/ なので、fswebcam のフォント指定を直接ここを指定するのが良いと思います。

文字化けを解消するための日本語フォント( VLゴシック )を yum でインストール方法。
( fswebcam-20100118 から fswebcam-20200725 は、下記のインストールで文字化けが解消します。)

〇 日本語フォントのインストール

cd /usr/local/src;\

CentOS 7.X   ---->
yum -y install vlgothic-*
CentOS Sream 8 の場合は、EPELリポジトリ(レポジトリ)をインストールしてから、日本語フォントをインストールします。


dnf -y install epel-release;\
dnf -y install vlgothic-*

Oracle Linux 8.4, Red Hat Enterprise Linux 8.4 の場合は、EPELリポジトリがサポート対象外なので インストールは、自己責任で直接 fedoraproject.org から rpm をダウンロードしてインストールします。

dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm


9. 定点カメラの設置位置の工夫

私の定点カメラは、リビングの西側の窓の内側に設置しています。
窓は、今はやりの断熱用の二重ガラスでない為、冬場は室内と室外の温度差で直ぐに結露し てしまいます。
この解決方法として、カメラを窓の端の高い位置でガラスにギリギリまで接近させた位置に 取付けています。
朝日の入り込みも低減できるメリットもあります。

なお、ガラスと間隔は、窓を開閉できる位置にしています。理想は、ガラスに密着させたか ったのですが、レンズのへこみに小さなクモが入り込み巣を作って悪さをするのでメンテナ ンスのために、窓を開閉できる位置にしています。

外からのカメラ設置場所写真

もう一つカメラよっては、問題になることがあります。それは、私が使用しているカメラの 動作表示用 の LED が カメラ前面に付いているため、外が暗いときに、窓に映り込み映像に 入り込み事です。

対策は、黒のマジックで塗るか、テープでマスキングする方法があります。私の場合、後者 採用しています。

(2015年からは、カメラを分解した時に、LED自身に黒のマジックでマスキングしています。)

10. お断り・表示画面

お断り:プログラムの作り方等、私の技術レベルで作成したてますので、無駄等があるとおも います。
さらに、研究し良いものを作るべき、努力していく予定です。

カメラの設置に関して、多数のサイトを見ましたが、ゼロから最後までわかり易く記述され たサイトが無かったので、この通りにすれば実現できるように、私がした事・感じたことを 紹介してみました。

こんな具合に、表示されます。

          通常表示              サービス停止表示

cameradata.jpg stop1.jpg
USBカメラ動作不良時のお断り写真
ngcame.jpg

11.ミニ PC を使ってネットワークカメラシステム( 10 秒更新 )の作成

市販のネットワークカメラにコスパ的に良いものが見つからなかったので、予備のサーバ機 を使って静止画を 10 秒毎にアップロードするネットワークカメラのシステムを構築してみました。
このプログラムは、ホームページとは関係なく、cron で定時に動作させます。

構築手順は、下記の通りです。


① 下記手順で最小限の CentOS 7 のシステムを構築します。

  1. CentOS 7 のシステムを最小のシステム構成でインストールします。

  2. PC の時刻を日本標準時に同期させる Chrony の設定と起動をします。
  3. ファイル転送プログラム ftp と vsftpd をインストールします。
  4. USBカメラ用のプログラム fswebcom をインストールします。
  5. SELinux のモード設定は、disabled (制御無効)・enforcing(有効)どちらでもOKです。

    enforcing(有効)の場合には、SELinux のポリシーの設定をしてください。

② USBカメラからの画像の取得とサーバ機への転送をするプログラムの作成

 プログラムの作成は、シェルスクリプト( sh )を使用して作成しました。下記がその主要部分です。
 実際のプログラムは、下記のプログラムに画像を取得・転送をする時間帯の管理等のプログラムを追加しています。

 なお、ftp で使用するバッチファイルは、毎回同じ内容なので事前に別プログラムで作成しました。
 そのプログラムは、 webcam_batch.sh (プログラム名 2)で事前に一度だけ手動で実行させています。

 転送先サーバーIPアドレス・ログイン情報: ユーザ名・ログイン情報: パスワード等は、貴方の環境に合わせてください。

 ちなみに、ログイン情報: ユーザ名・ログイン情報: パスワードは、Tera Term にログインする時と同 じユーザ名・パスワードを設定します。

 ftp の実行は、各コマンド・情報をバッチファイルとして作成してそのバッチファイルで実行しています。

 使用した USBカメラは、サーバ機と同じ機種 Logicool のUVC対応 USB カメラ C270 を使用しました。


プログラム 1

webcam.sh このプログラムで画像データ取り込みと サーバ機へのアップロードを行います。
通常キャプチャ開始フレームは、6 回目にしていますが、下記の場合は、2 回目にしています。

△△△△は、ユーザーディレクトリです。

#!/bin/bash
#
# 画像データ取り込みディレクトリとファイル名
INFILE="home/△△△△/webcam/camdata.jpg" 
#==========================================
#  Logicool Brightness=65% Contrast=15% -r 640x480 --font:32
#  フォントデータは、/home に保存しています。
#==========================================

#---------------- camera Start -------------------
 /usr/bin/fswebcam -p YUYV --bottom-banner --line-colour '#FF000000'\
   --banner-colour '#FF000000' -S 2 -r 640x480\
   --font '/home/△△△△/webcam/Font/VL-Gothic-Regular.ttf:32'\
   --text-colour '#FFFF00'\
   -s Brightness=65%\
   -s Contrast=15%\
   --timestamp '%Y-%m-%d %H:%M:%S' --jpeg 95 --save ${INFILE}
#------------------ camera End -------------------

#==========================================
# ftp で画像データのアップロード
# 転送処理は、事前に作成済みのコマンドバッチファイルを
# バッチ形式で実行させる。
#
# -n : ftpクライアント起動の際、自動ログイン実行を抑止。
# -v : FTPサーバーの処理後のメッセージを表示。
#==========================================

ftp -nv < /home/webcam/ftp_webcam.txt # ftp 転送手順をバッチファイルで実行する。

#==========================================


プログラム 2

webcam_batch.sh このプログラムで、コマンドバッチファイル ftp_webcam.txt を作成します。

※※ このプログラムは、バッチファイル作成の為、手動で一度だけ実行させます ※※

※※ 注意事項 ※※

 コマンド[ passive : パッシブモードを使用をOFFする ]は、CentOS 7.X では、 必要ですが、CentOS 8.X では、エラー( 425 Failed to establish connection. )が出ますので、削除してください。  ( 理由は、不明です。)

#!/bin/bash
#
#==========================================
#   ftp で画像データを転送用コマンドバッチファイルの作成
#==========================================

# FTP転送処理用コマンドバッチファイル名( フルパス指定 )
ftp_FILE="/home/△△△△/webcam/ftp_webcam.txt"
S_FILE1="camdata.jpg" # HTML転送元ファイル名
S_FILE2="snapshot.jpg" # HTML転送先ファイル名
S_DIR1="/home/△△△△/webcam"    # 転送元ファイルディレクトリ

S_HOST="192.168.0.XX" # 転送先サーバーIPアドレス
User_Name="△△△△△△" # 転送先サーバーログイン情報: ユーザ名
Pass_Word="○○○○○○" # 転送先サーバーログイン情報: パスワード

S_DIR2="/var/www/html/httpd_prgram"  # 転送先の保存先ディレクトリ

#==========================================
#   ftp 転送実行のコマンドバッチファイル作成 ---> ftp_FILE="ftp_webcam.txt"
#==========================================

echo "open ${S_HOST}" > ${ftp_FILE} # サーバ機に接続する
# ftp 起動時 passiveモードは、on なので off にします。
# 本 PC からサーバ機へのアップロードを有効にします。
#------------------------------------------------------
# コマンド[ passive ]は、CentOS 7.X では、必要ですが、
# CentOS 8.X では、エラーが出ますので、削除してください。
#-------------------------------------------------------
echo "passive" >> ${ftp_FILE}

echo "user ${User_Name} ${Pass_Word}" >> ${ftp_FILE}  # 指定したユーザー名でログイン

echo "cd ${S_DIR2}" >> ${ftp_FILE}# アップロード先のディレクトリに移動
# PC 内のファイルをアップロードする
echo "put ${S_DIR1}/${S_FILE1} ${S_DIR2}/${S_FILE2}" >> ${ftp_FILE}

echo "close" >> ${ftp_FILE} # サーバ機から切断する
echo "bye" >> ${ftp_FILE}#「ftp」コマンドを終了

#==========================================

③ 上記プログラム(仮に、プログラム名を webcam.sh としておきます。保存先を /home/webcam/ とします。)を10 秒毎に起動する為、crontab の裏技??を使用して設定します。

その方法は、for と sleep コマンドを使用して作成します。

設定は、下記の通りです。約 10 秒毎にプログラムが実行されます。


↓ 実行時間帯指定 ↓ ブログラムを起動する間隔( 秒 ) ↓ 起動プログラムのフルパス

* 6-18 * * * for i in `seq 0 10 59`;do (sleep ${i} ; /home/△△△△/webcam/webcam.sh > /dev/null 2>&1 ) ; done;

○ ※※ 2018.02.07 追加 [ 10 秒毎の起動方法を改良 ] ※※

上記の裏技もどきでは、約10秒の間隔が得られないので、crotab は、単に 1 分毎のプロ グラムの起動にしてプログラム内で、for 文( 6 回繰り返す処理 )と sleep( 処理の待機 ) コマンドで 約10秒毎に 6 回繰り返すように改良しました。

#!/bin/bash の後に for 文 をプログラムの終わりに sleep を追加しました。

crontab の設定は、下記の通りで 6時から18時の間、単に 1 分毎の起動だけです。


*/1 6-18 * * * /home/△△△△/webcam/webcam.sh > /dev/null 2>&1

プログラムの改良点

#!/bin/bash

for i in `seq 1 6`;do  # 6 回繰り返す処理


  ( 上記のブログラム 1 [ webcam.sh ] )

if [ ${i} -eq 6 ]; then
  break# 6 回実行したら即終了させる。
 fi
  sleep 6s;     # 10 秒待って繰り返し処理実行 プログラム本体の処理時間を考慮して 6 秒にしています。
done;


④ サーバ機側のホームページの設定

10 秒毎に表示を切り替える為、下記の 1 行を <head>……</head>に追加します。

<meta http-equiv="Refresh" content="9"> <---- 同期の関係で 6 秒にしています。

システムを上記 ① から ④ の手順で 10 秒毎に画像データをアップロードするネットワー クカメラの構築することが出来ます。CP の負荷も軽く快適に動作しています。

※※ 注意事項 ※※

転送先のサーバ機の SELinux のモードが enforcing に成っている時、ftpd_full_access が off に成っているとアップロードが拒否されますので、必ず ftpd_full_access --> on にしてアップロードしてください。

下記は、 プログラム 1 : webcam.sh のプログラムの全文です。

[ ネットワークカメラシステムプログラム ] の詳細は、
            [ここをクリック]してください。


※※ 下の映像は、上記の方法で実現した 10 秒更新のネットワークカメラシステムの映像です。※※





同一 PC で 1 分・10 秒更新を実現するプログラムの作成

現在、LAN カメラ用の PC 不調の為、10秒毎の表示は、1分毎の表示の後に、10秒毎の表示プログラムを付け加えて同一 PC で処理をしています。
crontab の設定は、下記の通りで 6時から18時の間、単に 1 分毎の起動だけです。


*/1 6-18 * * * /home/△△△△/webcam/webcam.sh > /dev/null 2>&1

下記は、そのプログラムの概要です。

#!/bin/bash

  ( 天気情報のデータ設定処理 )

  ( 上記のブログラム 1 [ webcam.sh ] )
  ( 時刻表示は、秒 無し 保存先は、1分用の保存先 )

for i in `seq 1 6`;do  # 6 回繰り返す処理


  ( 上記のブログラム 1 [ webcam.sh ] )
  ( 時刻表示は、秒 有り 保存先は、10秒用の保存先 )

if [ ${i} -eq 6 ]; then
  break# 6 回実行したら即終了させる。
 fi
  sleep 8s;     # 10 秒待って繰り返し処理実行 プログラム本体の処理時間を考慮して 8 秒にしています。
done;


[ CentOS 7.X, 8.X 用 1分・10秒更新プログラム全文 ] の詳細は、

            [ここをクリック]してください。



戻る