Shell Script with Process Monitoring

タイトル合ってるか分かりませんが知りません。
とりあえず何か作ったので、参考までに。

 現在監視カメラの設置を進めているところでありますが、ハードウェア側の準備は整ったのですが、ソフトウェア側をどうしようかという話。

 V4Lをキャプチャして、mencoderでmsmpeg4コーデックを利用して録画しようと思うのですが、どうも録画しつつ、同じ映像を別なプログラムからアクセスすることは出来ないようです。デバイスがロックされるのかな。よく分からないですが。しかし、24時間録画したファイルなんてバカでかくて開く気になれません。30分毎くらいにファイルを区切りたいのですが、録画を区切るのと、再開するのとで、なんとかあまり間が開かないようにしたい、というわけです。それで、pidファイルを作成して、それがあれば待機して、なければ録画を開始する、というスクリプトを書いてみました。

[user]$vi recvid.sh
#!/bin/sh

PID_PATH=/data/up/vid/recvid.pid
DIR=/data/up/vid
RECTIME=60
INTERVAL=0.5s

exe(){
  if [ -e ${PID_PATH} ] ; then
    sleep ${INTERVAL}
    { exe; }
  else
    FILENAME=vid-`date '+%Y-%m-%d--%H-%M-%S'`.avi
    OUTPUT_FILEPATH=${DIR}/${FILENAME}

    echo $$ > ${PID_PATH}

    mencoder tv://1 \
     -tv driver=v4l2 \
     -tv norm=NTSC \
     -tv chanlist=japan-bcast \
     -tv width=352:height=240 \
     -ovc lavc \
     -lavcopts vcodec=msmpeg4:vbitrate=350 -fps 29.97 \
     -vf pp,unsharp=l:c \
     -oac copy \
     -o ${OUTPUT_FILEPATH} \
     -endpos ${RECTIME}

    rm -f ${PID_PATH}
  fi
}

exe

mencoderのところは、実際に録画を行うところです。RECTIME=60は、60秒録画を行う設定です。
mencoder で TV 録画
を参考にさせて頂きました。

まだこれからいじってかなきゃですが、とりあえず上記で、PIDファイルの監視はできているようです。
{ exe; } でやることで子プロセスを生成しないはずですが、関数として定義している場合どうなんでしょうか?よく分からないです・・・。

VN:F [1.6.4_902]
Rating: 0.0/10 (0 votes cast)
VN:F [1.6.4_902]
Rating: 0 (from 0 votes)

Popularity: 50% [?]

Leave a Reply

Sign-in:

OpenID:

OpenID

Anonymous