EPGRECはTSに含まれるEPGデータを抜き出して、録画予約をするプログラム。UbuntuなどLinuxからやろうと思うと、世間に情報があるのがコレしかないので仕方ない。PHP+Smarty+MySQLという枯れた。いや、枯れ果てた設計。
必要なパッケージをインストール
sudo aptitude install at apache2 php5 php5-mysql mysql-server phpmyadmin
tsからepgデータをDumpするプログラムを取得,make,install
wget 'http://www.mda.or.jp/epgrec/index.php?plugin=attach&refer=%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E5%89%8D%E3%81%AE%E6%BA%96%E5%82%99&openfile=epgdumpr2-utf8.tar.gz' -O epgdumpr2-utf8.tar.gz tar zxvf epgdumpr2-utf8.tar.gz cd epgdumpr2 make cp epgdump /usr/local/bin
epgrecはatコマンドを使うので
PHP(apache)がatコマンド使えるように設定
at.deny にat コマンドを拒否する設定が書いてある
これをphp5(www-data)からatコマンドを実行できるようにする。
sudo sed -i -e 's/www-data/#www-data/g' at.deny
www-data が シェルを使えることを確認する。らしい。
sudo vipw # www-data が /bin/shになってることを確認 sudo vipw -s #www-data のパスワードが無効になってることを確認
ファイル開くの面倒、めんどくさいのでgetentする
takuya@atom:~$ getent passwd | grep www-data www-data:x:33:33:www-data:/var/www:/bin/sh # sh だからOK takuya@atom:~$ sudo getent shadow | grep www www-data:*:14889:0:99999:7::: #まぁOKか。
epgrecをダウンロードして展開
wget http://jaist.dl.sourceforge.jp/epgrec/46492/epgrec-20100322.tar.gz tar zxvf epgrec-20100322.tar.gz
Apacheインストール先に持って行く
phpmyadminなんかと同じインスト方式にした。
epgrecをどこで動かすか考えたが、aliasで使うことにした。これが後で管理しやすいだろう。
sudo cp -r epgrec /usr/local/share #
ApacheとPHPからepgrecを使えるように設定
cat /etc/apache2/phpmyadmin.conf| sed s/phpmyadmin/epgrec/g > test.conf sudo mv test.conf /etc/apache2/conf.d/epgrec.conf sudo vim /etc/apache2/conf.d/epgrec.conf # phpmyadmin.confをひな形に作って余計なものをけして使う。 Alias /epgrec /usr/local/share/epgrec <Directory /usr/local/share/epgrec> Options FollowSymLinks DirectoryIndex index.php AddType video/mepg .ts <IfModule mod_php5.c> AddType application/x-httpd-php .php php_flag magic_quotes_gpc Off php_flag track_vars On php_flag register_globals Off php_value include_path . </IfModule> </Directory>
設定が終わったらapacheリロード
sudo /etc/init.d/apache2 reload
設定に必要なファイルを作る
http://localhost/epgrec にアクセスするとインストールスクリプトが足りないファイルを教えてくれる。
設定の指示をみながらpermissionを変更し、ファイルを作る。
/usr/local/share/epgrec sudo cp config.php.sample config.php sudo cp do-record.sh.pt1 do-record.sh cd /usr/local/share/epgrec sudo chmod 777 -R {templates_c,thumbs,video,settings,cache}
チャンネルを設定
config.php
//実家の北淡・垂水に併せて変えた // http://www.soumu.go.jp/soutsu/kinki/2011/schedule/area01/index.html // 神戸地区デジタルチャンネルマップ $GR_CHANNEL_MAP = array( "GR22" => "22", // NHK nhk "GR13" => "13", // 教育 etv "GR16" => "16", // 毎日 mbs "GR15" => "15", // 朝日 abc "GR17" => "17", // 関西 ktv "GR14" => "14", // 読売 ytv "GR26" => "26", // サンテレビ sun );
設定終了したら、EPG取得
1chあたり60秒のTSを取得して、そこからEPGを抜くので10分程度はみておく。電波が弱いときはがんがんエラーになるし、深夜で放送休止の時にやると、悲惨なことになる。
EPG取得がエラー
buffer overflow detected ***: /usr/local/bin/epgdump terminated overflowになってしまう。
>>743
http://2bangai.net/read/7eab4a8a5ae82a96e6b4378d57d2f060bfd4c016d372e3b2b3e9778c5ab8682c/701
2専にバッファオーバーフローのパッチがありますけど、それあてても出ますか?
いずれにしてもsigsegvの方はepgdumpをデバッグシンボル付きでコンパイルして
ねちねち追わないとわかんなそうですね。epgdumpがコケてもcronで繰り返すと
いずれ取れてくるので個人的には余りというかほとんど気にしてないですが。
とうことなのでパッチをあてておいた.このへんは別になくてもいだいじょうぶ
wget http://2sen.dip.jp/cgi-bin/dtvup/source/up0248.zip patch -p0 . < fix_overflow_maxseclen.patch
PHPが実行できる時間を長くする
php は初心者向けなので、安全のために実行継続時間が30秒に設定されている。これじゃぁEPG受信中にタイムアウトしそうなので長くしておく。
もっとも内部的に、fork してるっぽいけどね。20分待つという表示を見て反射的に設定書いた
/etc/php5/{apache2,cli}/php.ini
max_execution_time = 1800 # 440 行目
注意点:アップデートしたらsegmentation fault
カーネルが更新されたら動かない。そりゃそうだ。
http://absolutearea.blogspot.com/2010/07/getepgphp-segmentation-fault.html
電波弱いならEPGすらもとれない
Sample.exeの表示はC/N比で地デジの限界云々は電界強度でしょ。
http://2chnull.info/r/avi/1272199164/101-200
PT2のC/N比なら25dB以上ならまずOKっぽいし、電界強度なら推奨値が
ということですね。
b25 がエラーになってしまうときは要確認。Linuxサーバ−をWindowsとデュアルブートとかにしておいて、TVTESTでアンテナ感度をすぐ調べられるようにしておきたい。Linuxだと視聴しながらチェックが難しいので。