epgrec una
epgrecを利用していたのですが、いつのまにか「epgrec una」という高機能版が有志の方によってバージョンアップされていました。
以下のように機能が強化されていますのでさっそくepgrecから移行してみます。
本家の情報
unaの機能
- リアルタイム視聴
- 録画ファイルのDir指定
- 番組追従性の強化
- チャンネル設定自動化 などなど
必要なファイルのダウンロード
link | ファイル(※2015/10/12時点) |
---|---|
recpt1新本家 | pt1-c8688d7d6382.tar.bz2 |
recpt1 httpサーバ機能追加パッチ | recpt1-http-rev3.tar.gz |
epgrecUNA 人柱版 (2015/07/20) ※2015/11/14UPDATE! | epgrecUNA_150720.tar.gz |
epgrecUNA用epgdump 141013版 | epgdumpUNA141013.tar.gz |
上記ファイル(epgrecUNA)をゲットするのに、パスフレーズが必要なんですがわかりにくいですwww
開発者さんの趣味らしいですが、ちょっと考えなきゃ分からないかもです。
ヒントは適当な何かの別館のホームページのプロフィール欄を良く見てください。
バックアップ
・・・とはいっても既にepgrecを利用してる方は録画データも多いことでしょう。
ぼくちゃんは2TBのHDDの50%ほどをデータが利用中でしたが、面倒なのでバックアップしませんでした。
良い子はマネしないでね!
一番簡単なのは外付けHDDなどにバックアップですかね。
Linuxなんでマウントしなきゃいけないかもですが。ここが参考になるかもです。
DBもバックアップを忘れずに。↓の方でコマンド書いてあります。
レッツ移行作業!
の前に、
上記でダウンロードしたファイルはteratermをお使いなら、SSH SCP機能を使って転送できます。
ファイル->SSH SCPで上の画面になります。/usr/local/srcにダウンロードファイルを置いておきます。
逆にサーバからローカルにファイルを転送したい場合は「Recieve」を使ってください。
環境
[bash]
[root@recorder src]# cat /etc/redhat-release
CentOS release 6.4 (Final)
[root@recorder ~]# php -v
PHP 5.3.3 (cli) (built: Feb 22 2013 02:51:11)
[root@recorder ~]# mysql –version
mysql Ver 14.14 Distrib 5.1.69, for redhat-linux-gnu (x86_64) using readline 5.1
[/bash]
recpt1パッチ
[bash]
[root@recorder src]# tar -xvjf pt1-c8688d7d6382.tar.bz2
[root@recorder src]# tar -xvzf recpt1-http-rev3.tar.gz
[root@recorder src]# patch -p0 < recpt1-http-rev3/recpt1-http.diff
patching file pt1-c8688d7d6382/recpt1/configure.ac
patching file pt1-c8688d7d6382/recpt1/recpt1.c
patching file pt1-c8688d7d6382/recpt1/recpt1core.c
patching file pt1-c8688d7d6382/recpt1/recpt1ctl.c
patching file pt1-c8688d7d6382/recpt1/tssplitter_lite.c
[root@recorder src]# patch -p1 -d pt1-c8688d7d6382 < recpt1-http-rev3/tssplitter-apnd.diff
patching file recpt1/tssplitter_lite.c
[root@recorder src]# cd pt1-c8688d7d6382/recpt1
[/bash]
pt3を使っているので以下のようにpt1->pt3へ書き換え
[bash]
[root@recorder recpt1]# vi pt1_dev.h
char *bsdev[NUM_BSDEV] = {
"/dev/pt3video1",
"/dev/pt3video0",
"/dev/pt3video5",
"/dev/pt3video4",
"/dev/pt3video9",
"/dev/pt3video8",
"/dev/pt3video13",
"/dev/pt3video12"
};
char *isdb_t_dev[NUM_ISDB_T_DEV] = {
"/dev/pt3video2",
"/dev/pt3video3",
"/dev/pt3video6",
"/dev/pt3video7",
"/dev/pt3video10",
"/dev/pt3video11",
"/dev/pt3video14",
"/dev/pt3video15"
};
[root@recorder recpt1]# ./autogen.sh
Generating configure script and Makefiles for recpt1.
Running aclocal …
Running autoheader …
Running autoconf …
[root@recorder recpt1]# ./configure –enable-b25
checking for gcc… gcc
checking for C compiler default output file name… a.out
checking whether the C compiler works… yes
checking whether we are cross compiling… no
checking for suffix of executables…
checking for suffix of object files… o
checking whether we are using the GNU C compiler… yes
checking whether gcc accepts -g… yes
checking for gcc option to accept ISO C89… none needed
checking for create_arib_std_b25 in -larib25… yes
checking for log10 in -lm… yes
checking for pthread_kill in -lpthread… yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
[root@recorder recpt1]# make clean
revh=`hg parents –template ‘const char *version = "r{rev}:{node|short} ({date|shortdate})";\n’ 2>/dev/null`; \
if [ -n "$revh" ] ; then \
echo "$revh" > version.h; \
else \
echo "const char *version = \""1.2.0"\";" > version.h; \
fi
gcc -MM recpt1.c decoder.c mkpath.c tssplitter_lite.c recpt1core.c recpt1ctl.c recpt1core.c -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 > .deps
rm -f recpt1.o decoder.o mkpath.o tssplitter_lite.o recpt1core.o recpt1ctl.o recpt1core.o checksignal.o recpt1core.o recpt1 recpt1ctl checksignal .deps version.h
[root@recorder recpt1]# make
revh=`hg parents –template ‘const char *version = "r{rev}:{node|short} ({date|shortdate})";\n’ 2>/dev/null`; \
if [ -n "$revh" ] ; then \
echo "$revh" > version.h; \
else \
echo "const char *version = \""1.2.0"\";" > version.h; \
fi
gcc -MM recpt1.c decoder.c mkpath.c tssplitter_lite.c recpt1core.c recpt1ctl.c recpt1core.c -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 > .deps
gcc -O2 -g -pthread -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o recpt1.o recpt1.c
recpt1.c: In function ‘main’:
recpt1.c:669: 警告: ‘listening_socket’ may be used uninitialized in this function
recpt1.c:669: 警告: ‘connected_socket’ may be used uninitialized in this function
recpt1.c:671: 警告: ‘channel’ may be used uninitialized in this function
gcc -O2 -g -pthread -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o decoder.o decoder.c
gcc -O2 -g -pthread -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o mkpath.o mkpath.c
gcc -O2 -g -pthread -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o tssplitter_lite.o tssplitter_lite.c
gcc -O2 -g -pthread -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o recpt1core.o recpt1core.c
gcc  -o recpt1 recpt1.o decoder.o mkpath.o tssplitter_lite.o recpt1core.o -lpthread -lm -larib25
gcc -O2 -g -pthread -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o recpt1ctl.o recpt1ctl.c
gcc  -o recpt1ctl recpt1ctl.o recpt1core.o -lm
gcc -O2 -g -pthread -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o checksignal.o checksignal.c
gcc  -o checksignal checksignal.o recpt1core.o -lpthread -lm
[root@recorder recpt1]# make install
install -m 755 recpt1 recpt1ctl checksignal /usr/local/bin
[/bash]
テスト録画してみましょう
[bash]
[root@recorder epgdump]# recpt1 –b25 –strip 27 10 /home/share/test.ts
using B25…
enable B25 strip
pid = 8326
C/N = 17.366744dB
Recording…
Recorded 11sec
[root@recorder epgdump]# ls /home/share/
test.ts
[/bash]
epgdumpの差し替え
[bash]
[root@recorder src]# tar -xzvf epgdumpUNA141013.tar.gz
[root@recorder src]# cd epgdump
[root@recorder epgdump]# make clean
rm -f core epgdump *.o
[root@recorder epgdump]# make
[root@recorder epgdump]# make install
install -m755 epgdump /usr/local/bin
<h2>番組データが抽出できるかテスト</h2>
[bash]
[root@recorder epgdump]# epgdump test /home/share/test.ts –
a:2:{i:0;a:8:{s:2:"id";s:9:"test_1024";s:12:"display-name";s:27:"NHK総合1・ 東京";s:2:"ts";i:32736;s:2:"on";i:32736;s:2:"sv";i:1024;s:2:"st";i:1;s:4:"node";i:0;s:4:"slot";i:0;}i:1;a:8:{s:2:"id";s:9:"test_1025";s:12:"display-name";s:27:"NHK総合2・東京";s:2:"ts";i:32736;s:2:"on";i:32736;s:2:"sv";i:1025;s:2:"st";i:1;s:4:"node";i:0;s:4:"slot";i:0;}}
[/bash]
DB初期化
バックアップしておきましょう。
[bash]
[root@recorder src]# mysqldump -u root -p PT3 > 20151115PT3dump.sql
[root@recorder src]# mysql -u root -p
mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| PT3 |
| mediatomb |
| mysql |
| test |
+——————–+
5 rows in set (0.00 sec)
mysql> drop database PT3;
Query OK, 6 rows affected (0.44 sec)
mysql> create database epgrec;
Query OK, 1 row affected (0.02 sec)
[/bash]
epgrec una 差し替え
[bash]
[root@recorder src]# tar -xvzf epgrecUNA_151114.tar.gz
[root@recorder src]# cd epgrec/
[root@recorder epgrec]# vi config.php
// settings/gr_channel.phpが作成された場合、
// config.php内の$GR_CHANNEL_MAPは無視されます
// 首都圏用地上デジタルチャンネルマップ
// 識別子 => チャンネル番号
$GR_CHANNEL_MAP = array(
"GR19" => "19", // NHK(sougou)
"GR26" => "26", // NHK(Eテレ)
"GR25" => "25", // 日テレ
"GR22" => "22", // TBS
"GR21" => "21", // フジ
"GR24" => "24", // テレ朝
"GR23" => "23", // テレ東
// "GR16" => "16", // MX TV
"GR18" => "18", // テレ神
// "GR30" => "30", // 千葉
// "GR32" => "32", // テレ玉
// "GR28" => "28", // 大学
);
// 第一チューナー設定(主にPTn)
define( ‘TUNER_UNIT1’, 2 );                                                     // 各放送波の論理チューナ数(地上波・衛星波で共用 ex.PT1が1枚なら2)
[/bash]
epgrecのDir名を変更しておく
[bash]
[root@recorder epgrec]# mv /var/www/epgrec/ /var/www/epgrecbak
[root@recorder epgrec]# cp -rp /usr/local/src/epgrec /var/www
[/bash]
以下のURLにアクセス(IPの部分は自分の環境に合わせて指定してくださいね!)
以下のメッセージが出て自動チェックしてくれます
PHPのインストール状態をチェックします
epgrecのインストール状態をチェックします
config.phpのHTTPD_GROUPの設定が違います。apacheに変更してください。
config.phpのHTTPD_USERの設定が違います。apacheに変更してください。ディレクトリのパーミッションチェック(777)
/var/www/epgrec/templates_c…777…ok
/var/www/epgrec/video…777…ok
/var/www/epgrec/thumbs…777…ok
/var/www/epgrec/settings…777…ok
/var/www/epgrec/cache…777…okファイルのパーミッションチェック(755)
/var/www/epgrec/recomplete.php…755…ok
/var/www/epgrec/shepherd.php…755…ok
/var/www/epgrec/sheepdog.php…755…ok
/var/www/epgrec/collie.php…755…ok
/var/www/epgrec/airwavesSheep.php…755…ok
/var/www/epgrec/trans_manager.php…755…ok
/var/www/epgrec/scoutEpg.php…755…ok
/var/www/epgrec/repairEpg.php…755…ok
/var/www/epgrec/showEXmem.php…755…ok
/var/www/epgrec/resetEXmem.php…755…ok
/var/www/epgrec/epgwakealarm.php…755…ok
/var/www/epgrec/gen-thumbnail.sh…755…ok一旦、初期起動を終了します。
設定が違います~と怒られたので以下のようにconfigを変更します
[bash]
[root@recorder epgrec]# vi config.php
define( ‘HTTPD_USER’, ‘apache’ ); // HTTPD(apache)アカウント
define( ‘HTTPD_GROUP’, ‘apache’ ); // HTTPD(apache)アカウント
[/bash]
引き続きWEBで初期設定をしていきますが、僕は以下のように設定してみましたーーー
- 録画開始の余裕時間:15s
- 録画時間を長めにする:15s
- 録画ファイル名の形式:%YEAR%年%MONTH%月%DAY%日%HOUR%時%MIN%分%SEC%秒_%TYPE%%CH%_%TITLE%
crondの設定を行います
[bash]
[root@recorder epgrec]# cp /var/www/epgrec/cron.d/shepherd /etc/cron.d/
[root@recorder epgrec]# vi /var/www/epgrec/cron.d/shepherd
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
29 */2 * * *   apache /var/www/epgrec/shepherd.php
[root@recorder epgrec]# rm /etc/cron.d/getepg //getepgはepgrec版の番組取得スクリプト。不要なので削除します
[/bash]
以下のメッセージが出るところまでいくと最初の番組表取得を行います。
このリンクをクリックするとEPGの初回受信を開始します。
録画ストレージ作成
[bash]
[root@recorder epgrec]# mkdir /storage/video2
[root@recorder epgrec]# chmod 777 /storage/video2
[root@recorder epgrec]# mv /var/www/epgrec/video/*.ts /storage/video2/
[root@recorder epgrec]# rm -fr /var/www/epgrec/video
[root@recorder epgrec]# ln -s /storage/video2 /var/www/epgrec/video
[root@recorder epgrec]# ls -l /var/www/epgrec/video lrwxrwxrwx 1 root root 15 11月 15 01:56 2015 /var/www/epgrec/video -> /storage/video2
[/bash]
ちょっと使ってみての感想
録画ファイルのDir指定が嬉しいwww
これで整理しなくて済みますwww
録画済一覧も絞込みができたり、ダウンロードリンクが付いてたり、
かゆいところにちゃんと手が届いてます!イイ!