google ads mobile
google ads

【高機能版】epgrec unaに移行してみた

centos

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_scp

上記でダウンロードしたファイルは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 差し替え

MASPROのページを参考にチャンネル設定をしましょう。

[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の部分は自分の環境に合わせて指定してくださいね!)

http://192.168.*.*/epgrec/install/step1.php

以下のメッセージが出て自動チェックしてくれます

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%

una01 una02 una03

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の初回受信を開始します。

una00

録画ストレージ作成

[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

una05

録画済一覧も絞込みができたり、ダウンロードリンクが付いてたり、

かゆいところにちゃんと手が届いてます!イイ!

una04

タイトルとURLをコピーしました