epgrecのインストールと設定
Early Versionに比べて設定が増えているほか、cronの設定も変っているので日経Linuxをお持ちの方も一通り目を通してください。
epgrecのインストール
ダウンロードから、epgrecの最新アーカイブをダウンロードしてください。httpdのドキュメントルート(ここでは/var/www/と仮定します)に次のように展開します。
$ sudo tar xvzpf epgrec-日付.tar.gz -C /var/www/
パーミッションのチェック
tar xvzpfで展開すれば大丈夫だとは思いますが、もし動かないとか色々あったら/var/www/epgrec/以下のファイルやディレクトリのパーミッションをチェックしてください。
ファイル/ディレクトリ | パーミッション |
cache/ | 777 |
templates_c/ | 777 |
video/ | 777 |
thumbs/ | 777 |
settings/ | 777 |
その他のディレクトリ | 755 |
do-record.sh* | 755 |
do-record.sh.friio* | 755 |
do-record.sh.test* | 755 |
do-record.sh.pt1* | 755 |
getepg.php* | 755 |
recomplete.php* | 755 |
gen-thumbnail.sh | 755 |
その他のファイル | 644など |
config.phpの設定
/var/www/epgrec/config.php.sampleをconfig.phpにリネームします。
$ sudo mv /var/www/epgrec/config.php.sample /var/www/epgrec/config.php
その上でエディタで開きます。たとえば、
$ sudo gedit /var/www/epgrec/config.php
ファイル内の設定を、環境に合わせて書き換えます。書き換えが必要&必要になるかもしれない項目を説明していきます。以下で挙げられた設定以外は変える必要はありません。
地上デジタルチャンネルマップ$GR_CHANNEL_MAPの設定
$GR_CHANNEL_MAPには、地上デジタル放送のチャンネルがPHPの配列として格納します。地上デジタル放送のチャンネルはお住まいの地域によって異なりますから、地域に合わせて設定を変えなければなりません。
config.phpには首都圏東部(千葉方面)用のチャンネルマップが初期設定されています。首都圏地方局のうち、TVK、テレビ埼玉、MXTVはコメントアウト(行頭の//)されており、千葉テレビはコメントアウトされていません。首都圏にお住まいの方は、地方局のコメントの位置を自分が受信できる局に変更するだけで利用できます。
一方、首都圏以外の地域では地域に合わせて丸ごとの変更が必要です。$GR_CHANNEL_MAPは次のように記述します。
$GR_CHANNEL_MAP = array( "識別文字列" => "チャンネル番号", "識別文字列" => "チャンネル番号", .....局数分入れる );
識別文字列は局を識別するためのユニークな(唯一無二の)文字列にします。例のように"GRチャンネル番号"としておくのが無難でしょう。受信可能なチャンネル番号は、ネットで調べることが出来ます。たとえば、マスプロ電工の相談窓口などを参考にすると良いでしょう。例として、大阪地区の$GR_CHANNEL_MAPの設定例を掲載しておきます。
$GR_CHANNEL_MAP = array( "GR24" => "24", // NHK "GR13" => "13", // 教育 "GR16" => "16", // 毎日 "GR15" => "15", // 朝日 "GR17" => "17", // 関西 "GR14" => "14", // 読売 "GR18" => "18", // テレビ大阪 );
$RECORD_MODEの設定(option)
epgrecはユーザーが任意に設定できる録画モードをサポートしています。後述の録画シェルスクリプトdo-record.shを使って、たとえばAVIにエンコードしたり、不要なPIDを削る録画モードを自由に追加できたりします。$RECORD_MODEには、そのモードで出力するファイル名に付ける拡張子を含むサフィックスとモードの表示名をPHPの配列の形で設定します。
$RECORD_MODE = array( // ※ 0は必須で、変更不可です。 0 => array( 'name' => 'Full TS', 'suffix' => '.ts', ), /* Example is as follows. 1 => array( 'name' => 'Min PID', 'suffix' => '_tss.ts', ), 2 => array( 'name' => '12Mbps MPEG4', 'suffix' => '.avi', ), */ );
モード0は必須モードで、無加工のTSを出力しなければなりません。というのは、番組表を取得するgetepg.phpがモード0でdo-record.shを起動するためです。
モード0以外のモードは任意に設定できますので、do-record.shと合わせて自由に設定してください。分からない方は、無理に$RECORD_MODEの設定をいじる必要はありません。
定数の設定
以降の設定はPHPの定数の形で設定します。
define( "定数名", 値 );
値の部分を読者の環境に合わせて設定してください。
設定すべき定数は7月29日テスト版から大きく変わりました。過去のバージョンの設定については過去のバージョンの設定を参照してください。
USE_KUROBON
BSチューナーとしてFriio BS/CSを使うならtrueを設定します。標準はfalseです。この定数だけ過去のバージョンとの互換性を維持するために残っています。なお、PT1とFriio BS/CSの混在はサポートしません(ちょいと工夫すれば可能ですが)。
その他
その他の項目は、設定を変える必要はまずありません。
do-record.shの設定
epgrecはdo-record.shというシェルスクリプトを使って録画を行いますので、do-record.shをお使いのチューナーに合わせて変える必要があります。デフォルトではfriio用(do-record.sh.friio)やPT1用(do-record.sh.pt1)のサンプルが入っているので、使っているチューナーに合わせてリネームすればとりあえず使えます。
$ sudo cp --archive /var/www/epgrec/do-record.sh.friio /var/www/epgrec/do-record.sh
do-record.shはこんな感じのスクリプトです。
#!/bin/sh echo "CHANNEL : $CHANNEL" echo "DURATION: $DURATION" echo "OUTPUT : $OUTPUT" echo "TUNER : $TUNER" echo "TYPE : $TYPE" RECORDER=/usr/local/bin/recpt1 $RECORDER --b25 --strip ${CHANNEL} ${DURATION} ${OUTPUT} >/dev/null
録画に必要な値が環境変数に入っていますので、それを利用してチューナーにあった録画コマンドを実行するよう書き換えてください。
変数 | 内容 |
CHANNEL | チャンネル番号 |
DURATION | 録画秒数 |
OUTPUT | 出力ファイル名 |
TUNER | 0から始まるチューナー番号 |
TYPE | BSデジタルなら"BS"、地上デジタルなら"GR" |
MODE | 録画モード |
TUNER番号が分かりにくいかもしれませんが、たとえば白Friioが2台あるとして片方のFriioが録画予約を実行している時には1が入っているということです(実行中のには0が入ってきている)。たとえば白FriioとHDUSをつないでいるのなら${TUNER}でもって、その2つを振り分けることができるわけです。
config.phpの$RECORD_MODEを設定した方は、次のようなdo-record.shを作ればいいでしょう。
RECORDER=/usr/local/bin/recfriio B25=/usr/local/bin/b25_bcas if [ ${MODE} == 0 ]; then # MODE=0では必ず無加工のTSを吐き出すこと $RECORDER $CHANNEL $DURATION ${OUTPUT} --b25 --strip elif [ ${MODE} == 1 ]; then # MODE=0以外はどう手を加えても構いません $RECORDER $CHANNEL $DURATION --b25 --strip | 何か加工 >${OUTPUT} elif [ ${MODE} == 2 ]; then $RECORDER $CHANNEL $DURATION ${OUTPUT}.tmp.ts --b25 --strip ffmpeg -i ${OUTPUT}.tmp.ts ... 適当なオプション ${OUTPUT} fi
こんな風に${MODE}の値によって、エンコードしたりとかパイプを通して加工したりtかいろいろできるわけです。
その他、${TYPE}や${TUNER}を使って複数チューナーを駆使したりとか、シェルスクリプトが書ければ、いろいろできると思います。PT1と黒FriioではBSチャンネル番号の指定の仕方が違いますが、これもdo-record.sh内で書き換えてやれば共存が可能でしょう。
do-record.shを作成したら、自分のアカウントで録画が実行できるか確かめてください。たとえば、次のように実行して録画ファイルが作成できるか調べておきます。
$ OUTPUT=test.ts CHANNEL=27 DURATION=30 TUNER=0 MODE=0 TYPE=GR /var/www/epgrec/do-record.sh
CHANNELの右辺には、受信可能なチャンネル番号を指定してください。上記を実行し、カレントディレクトリにtest.tsという30秒の再生可能なMPEG2-TSファイルが作成できればdo-record.shの動作は正常です。do-record.shが正しく動作しないとepgrecは利用できません。
初期設定
設定の方法は7月29日テスト版から大きく変わっています。過去のバージョンの初期設定については、過去のバージョンの設定を参照してください。
config.phpとdo-record.shの作成が終わったら、インストールしたepgrecのトップページにブラウザでアクセスします。ex. http://yourserver_ip/epgrec/。初回アクセス時には、インストールスクリプトが起動します。
このような画面で最低限のインストールチェックが行われます。何かエラーが表示されたら表示の指示を参考にファイルやディレクトリのパーミッション、物理チャンネル等を変更してください。
問題がなければ最下行のリンクをクリックします。
続いてシステム設定を行います。それぞれの項目には設定すべき内容と説明が記されていますから、すべての設定を行って最下行にあるボタンを押してください。ここで正しい設定が行われないとepgrecは利用できません。
続く環境設定では最低限、チューナーの台数のみ設定すればよく、そのほかの項目は運用しながら変更してもかまいません。設定を確認し最下行いのボタンを押します。
EPGの初回受信を行います。画面のメッセージを確認後、最下行のリンクをクリックしてブラウザを閉じ、20~50分程度待ってからepgrecのトップページを改めて開いてみてください。設定が正しく行われていれば番組表が表示されます。
なお、過去のバージョンからのアップグレードを行っている方は、EPGの初回受信は必要ないので、リンクをクリックせずにブラウザを閉じてください。
cronの設定(設定方法が変りました)
放送波EPGには、およそ1週間分の番組表が含まれており、随時更新されています。ですから、一定の間隔を置いてgetepg.phpを実行し、番組表データベースを更新しなければなりません。そのためにcronを設定します。
更新間隔はお好み次第ですが、getepg.phpの実行に20分程度はかかるので、新しい情報に保って置きたい人で1時間に1回程度、通常は1日に4~6回(4~6時間に1回)の割りでgetepg.phpを実行すれば十分です。
getepg.phpは番組表の更新とともに、キーワード自動録画予約を行います。そのため、Webサーバと同じユーザーで実行しなければなりません。epgrecを展開したディレクトリの下にあるcron.d/の下に、Debian/Ubuntu用の/etc/cron.d/getepgのサンプルが入っています。
SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 29 */2 * * * www-data /var/www/epgrec/getepg.php
getepg.phpのパス(/var/www/epgrec/getepg.php)はインストールしたディレクトリに合わせて書き換えてください。また、www-dataはDebian/UbuntuのWebサーバのユーザーです。Debian/Ubuntu以外のディストリビューションを使っている人は、そのディストリビューションの設定に合わせて変更してください。たとえばFedora+Apacheならapacheになると思います(私が知ってる時代のFedoraはそうでしたが…)。
サンプルでは2時間に1回の割りでgetepg.phpを実行します。間隔を短くしたいとか長くしたいときには*/2の部分を変えてください。
以上を適切に変更したら、このファイルを/etc/cron.d/以下にコピーします。
$ sudo cp cron.d/getepg /etc/cron.d/
ログなどを見て、getepg.phpが設定した時間ごとにWebサーバのユーザーで実行されている化調べておけば、より確実です。