pt2

録画予約システム http://www.mda.or.jp/epgrec/
recpt1(chardev版)と連携して番組を録画するwebアプリケーション
構築は3ステップあるようで、EPGdumpの作成、mysqlの準備、websiteの構築。

まずはyumで導入可能なもの(mysqlサーバ、php環境、atデーモンら)を事前にインストール

[root@c8 ~]# yum install at httpd mysql mysql-server php php-mysql php-mbstring php-process crontabs

EPGdump

recpt1で作ったTSファイルに仕込まれたEPG番組表を抜き出すツール。
抜き出したデータをmysqlに登録するわけである。

まずEPGdumpを取得。複数種あるみたい。

[root@c8 ~]# git clone git://github.com/stz2012/epgdump
[root@c8 ~]# cd epgdump
[root@c8 epgdump]#
[root@c8 epgdump]# make; make install

っで、このepgdumpの動作テストをしてみる。TSファイルの作成には recpt1 のオプション sid を指定せずに作成する

[root@c8 ~]# recpt1 --b25 --strip --device /dev/pt1video2  27 120 /opt/share/1ch.ts
[root@c8 ~]# epgdump GR27 /opt/share/1ch.ts  - | less
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tv SYSTEM "xmltv.dtd">
 
<tv generator-info-name="tsEPG2xml" generator-info-url="http://localhost/">
  <channel id="GR_1024" tp="GR27">
    <display-name lang="ja_JP">xxxxxxxxxxxxxxx</display-name>
    <transport_stream_id>32736</transport_stream_id>
    <original_network_id>32736</original_network_id>
    <service_id>1024</service_id>
  </channel>
  <channel id="GR_1025" tp="GR27">
    <display-name lang="ja_JP">xxxxxxxxxxxxxxx</display-name>
    <transport_stream_id>32736</transport_stream_id>
    <original_network_id>32736</original_network_id>
    <service_id>1025</service_id>
  </channel>
(中略)
[root@c8 ~]#

とTSファイルからEPG情報が引き出せた。

mysql

次に番組表を収めるデータベースを調整します。/etc/my.cnfを下記のように調整して、

[root@c8 ~]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
character-set-server=utf8
 
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
 
[mysql]
default-character-set=utf8
[root@c8 ~]#

mysqlを起動させます。

[root@c8 ~]# /etc/init.d/mysqld start
[root@c8 ~]# /sbin/chkconfig mysqld on

次にEpgRec向けのmysqlデータベース[rec]とユーザ[rec]を作成します。

[root@c8 ~]# mysql
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
mysql> create database rec;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| rec                |
| test               |
+--------------------+
mysql> grant all privileges on rec.* to rec@localhost identified by 'rec';
mysql> grant all privileges on rec.* to rec@'c8.chaperone.jp' identified by 'rec';
mysql> grant all privileges on rec.* to rec@'%'       identified by 'rec';
mysql> quit
[root@c8 ~]#

今度は作成したアカウント[rec]でデータベースにアクセスしてみる

[root@c8 ~]# mysql -u rec -p rec
Enter password:            *ここでパスワードを入力
mysql>
mysql> CREATE TABLE sample (id int);
mysql>
mysql> show tables;
+---------------+
| Tables_in_rec |
+---------------+
| sample        |
+---------------+
1 row in set (0.00 sec)
 
mysql> drop table sample;
mysql> quit
[root@c8 ~]#

これで番組表を収めるデータベースの調整は完了。

http

次に、EpgRecサイトの構築。

[root@c8 ~]# cd /var/www
[root@c8 www]# git clone git://github.com/stz2012/epgrec
[root@c8 www]# chown -R apache:apache ./epgrec
[root@c8 www]# mv ./epgrec ./rec
[root@c8 www]# cd ./rec
[root@c8 rec]# cp -a config.php.sample config.php
[root@c8 rec]# cp do-record.sh.pt1     do-record.sh
[root@c8 rec]# chmod 755  do-record.sh

あんまり良くはないのだが、httpd稼働ユーザであるapacheにシェルを持たせる。本来ならsuexecで一般ユーザが望ましいような気がしますけど...

[root@c8 ~]# chsh apache                                 *httpdの稼働ユーザでプログラムを動かすので
apache のシェルを変更します。
新しいシェル [/sbin/nologin]: /bin/sh
シェルを変更しました。
[root@c8 ~]#

webの設定を施します。どうやら/var/www/recとしたら、URLも/recと同じ名称にする必要があるみたい。

[root@c8 ~]# vi /etc/httpd/conf.d/epgrec.conf
Alias /rec  /var/www/rec
<Directory "/var/www/rec">
    Order Allow,deny
    allow from all
</Directory>
[root@c8 ~]#

ここでいったんhttpdとatサービスを開始します。

[root@c8 ~]# /etc/init.d/atd   start
[root@c8 ~]# /etc/init.d/httpd start

そしてブラウザでアクセスしてみる。

http://c8/rec

web画面には、どこどこのパーミッションを変更してくださいと表示される。
2014y03m03d_232033386.png
こんな感じで。っで、その都度調整する。具体的には

[root@c8 ~]# cd /var/www/rec  cache templates_c video thumbs settings
[root@c8 rec]# chmod 777 templates_c video thumbs settings cache
[root@c8 rec]#

として再読み込みを行います。web画面に
2014y03m03d_232515160.png
と表示されたら、この「以上を確認し次の設定に進む」リンクをクリックする。

次の画面ではシステムの環境設定を行います。

1.MySQLホスト名                         c8.chaperone.jp
2.MySQL接続ユーザー名                   rec                  *grant文で作ったユーザ
3.MySQL接続パスワード                   rec                  *grant文で作ったユーザのパスワード
4.使用データベース名                    rec                  *create databaseでの名前
5.テーブル接頭辞                        Recorder             *そのまま
6.インストールURL                       http://c8.chaperone.jp/rec
7.録画保存ディレクトリ                  /video               */var/www/rec/videoに保存される
8.サムネールの使用                      使用しない
9.ffmpegのパス
10.サムネール保存ディレクトリ
11.EPG取得用テンポラリファイルの設定                        *そのまま
12.使用コマンドのパス設定                                   *正しいのでそのまま
[設定を保存する]ボタンをクリックして、次の質問へ
13.地デジチューナーの台数              2
14.BSチューナーの台数                  0
15.CS録画の有無                        行わない
16.録画開始の余裕時間(秒)            20
17.録画時間を長めにする                0
18.連続した番組の予約                  行わない
19.録画コマンドの切り替え時間
20.優先する録画モード                  Full TS
21.mediatomb連係機能                   行わない
22.録画ファイル名の形式                %TYPE%%CH%_%ST%_%ET%
23.ページに表示する番組表の長さ(時間) 8
24.1局あたりの幅                        150
25.1時間あたりの高さ                    120
[設定を保存する]ボタンをクリック

これで番組を取得してmysqlに収めてくれるのだが、情報の更新は必要。なので、cronによる定期実行を行わせます。
データ更新をするのはapacheユーザなので、rootで設定する際は注意が必要。
*注意:使用するcronは下記に変更。稼働ユーザが異なるので。

[root@c8 ~]# crontab -u apache -e

としてviで下記のように編集

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
15 */2 * * *   /var/www/rec/getepg.php

これで二時間ごとにEPG番組取得が行われます。

留意点

番組情報の登録の形態は、

このような流れなのだが、gitで手に入れたepgrecの出力xmlフォーマットが重要で当初手こずった。
具体的にはxmlのchannnel値がepgrecの想定と異なり、channnelデータが入らなかった。
当初入手したepgrecが想定しているのは GR25 とかなのだが、epgdumpは GR4_1040 とsidが含まれたような形であった。

最新の60件
2026-02-16 2026-02-14 2026-02-11 2026-02-10 2026-02-09 2026-02-07 2026-02-06 2026-02-03 2026-02-02 2026-02-01 2026-01-31 2026-01-26 2026-01-24 2026-01-18 2026-01-17 2026-01-16 2026-01-12 2026-01-11 2026-01-10 2026-01-09 2026-01-08 2026-01-04 2026-01-01 2025-12-28 2025-12-27 2025-12-12 2025-12-11 2025-12-09 2025-12-08 2025-12-07 2025-12-05 2025-11-30 2025-11-24 2025-11-23 2025-11-18 2025-11-16 2025-11-05 2025-11-03 2025-11-02

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-03-05 (水) 05:06:12