cronでの録画スクリプトの記述方法
録画すると砂嵐しか映っていない件の解決編です。
Ubuntulinuxのフォーラムで訪ねたところ、以下のような回答をいただいた。
・とりあえずcronからキックするスクリプトの先頭に、ログイン時に
$ export
して出てくる環境変数をコピー&ペーストしておく。
このアドバイスに従って、録画スクリプトを書き換えたところ、cronで予約した録画がうまくいった。無事解決
原因はv4l2-ctlとivtv-tuneがうまく動作してなかったこと
このスクリプトの内容は以下の通りである。
#!/bin/bash v4l2-ctl -d /dev/video0 -i 0 --set-standard=11 ivtv-tune -d /dev/video0 -t japan-bcast -c 1 cat /dev/video0 > test.mpg & sleep 30m kill -KILL $!
- /dev/video0のデバイスの入力をアンテナ線からにする(-i 0)
- /dev/video0のチャンネルを1に設定する(-c 1)
- /dev/video0から読み込んだ映像をtest.mpgに保存
- 30分そのまま
- 強制終了
このうちの2行目、3行目がcronでキックした場合には動作せず(?)、チャンネルの設定ができなかったために砂嵐になっていた。動作をしていないということはcronではパスが効いていないということで、v4l2-ctl、ivtv-tuneとも/usr/local/binにあり、cronではここのパスは効かないということのよう。そこで$ exportで出てくる環境変数のうち、PATHに関わるものだけを残しておく。
なぜ砂嵐の出現が時折だったのか
チャンネルが設定できない場合は、その前に設定していたチャンネルでcat /dev/video0が作動するので、
- cronで作動する前に手動などで録画していた場合はそのときのチャンネルのまま録画
- OSを起動してから録画をしていない場合はチャンネル設定が一切できていないので砂嵐が映る
ということらしい。