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.sh755
その他のファイル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出力ファイル名
TUNER0から始まるチューナー番号
TYPEBSデジタルなら"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/。初回アクセス時には、インストールスクリプトが起動します。

step1.png

このような画面で最低限のインストールチェックが行われます。何かエラーが表示されたら表示の指示を参考にファイルやディレクトリのパーミッション、物理チャンネル等を変更してください。
問題がなければ最下行のリンクをクリックします。

step2a.png

続いてシステム設定を行います。それぞれの項目には設定すべき内容と説明が記されていますから、すべての設定を行って最下行にあるボタンを押してください。ここで正しい設定が行われないとepgrecは利用できません。

step3.png

続く環境設定では最低限、チューナーの台数のみ設定すればよく、そのほかの項目は運用しながら変更してもかまいません。設定を確認し最下行いのボタンを押します。

step4.png

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サーバのユーザーで実行されている化調べておけば、より確実です。

サイト内検索

AND OR