CentOS 7環境でPT3、recpt1、epgrecで録画鯖を立てる

CentOS 7環境で録画鯖を立てる。

CentOS 7をGnome環境で標準インストール。
カードリーダー:SCR3310-NTTCom
PT3を使用し、録画はrecpt1、録画予約にはepgrecを使用。
UNA版、STZ版共にうまく動作せず、更新が多く情報が少ないため本家のrecpt1、epgrecを使用。

参考
CentOS7 PT3の設定 - わすれないうちにメモしよう
CentOS7にepgrec(UNA)+PT3環境を構築する。 - UbuntuによるEco Linuxサーバ構築記


ビルド環境のインストール。
# yum -y install kernel-devel-`uname -r`
# yum -y install git unzip bzip2 at
# yum -y install gcc gcc-c++ kernel-devel make autogen automake patch perl-ExtUtils-MakeMaker

カードリーダソフトウェアのインストール。
# yum -y install ccid pcsc-lite pcsc-lite-devel pcsc-lite-libs

# cd /usr/local/src
# wget http://ludovic.rousseau.free.fr/softwares/pcsc-perl/pcsc-perl-1.4.13.tar.bz2
# tar jxvf pcsc-perl-1.4.13.tar.bz2
# cd pcsc-perl-1.4.13
# perl Makefile.PL
# make
# make install

# cd /usr/local/src
# wget http://ludovic.rousseau.free.fr/softwares/pcsc-tools/pcsc-tools-1.4.23.tar.gz
# tar zvxf pcsc-tools-1.4.23.tar.gz
# cd pcsc-tools-1.4.23
# make
# make install

# systemctl enable pcscd
# systemctl start pcscd
# pcsc_scan


arib25のインストール
makeに失敗する場合はカードリーダー周りを再インストール
# yum install -y ld-linux.so.2

# cd /usr/local/src
# wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip
# unzip c44e16dbb0e2.zip
# cd pt1-c44e16dbb0e2/arib25
# make
# make install


PT3ドライバのインストール。再起動で有効化
# cd /usr/local/src
# echo "blacklist earth-pt1" >> /etc/modprobe.d/blacklist.conf
# git clone https://github.com/m-tsudo/pt3.git
# cd pt3/
# git log
# make
# make install

# reboot


recpt1のインストール。
下記URLからrecpt1のパッチ済みのファイル群をダウンロード、/usr/local/src/ あたりに展開する
http://sourceforge.jp/projects/epgrec/downloads/53384/pt1-drv_20111001.tar.gz/

# cd /usr/local/src
# tar zvxf pt1-drv_20111001.tar.gz

# cd pt1-7662d0ecd74b/recpt1
# cp ../patch/bs.patch .
# patch -p0 < bs.patch

# vi pt1_dev.h
※「pt1video」を「pt3video」に書き換える

# ./configure --enable-b25
# make clean
# make
# make install
/usr/local/binにrecpt1とrecpt1ctlが作成される。

epgdumpr2のインストール。録画したtsファイルからEPGを取り出します。
# cd /usr/local/src
# tar zvxf epgdumpr2_20111001.tar.gz
# cd epgdumpr2
# touch * (そのままでは make できないのでおまじない)
# make clean
# make
# cp epgdump /usr/local/bin


Apache、MariaDBなどのインストール
# yum -y install httpd php php-cli php-sql php-mysql php-mbstring php-process mysql-server
# vi /etc/php.ini
date.timezone = Asia/Tokyo
# systemctl start httpd mariadb
# systemctl enable httpd mariadb

# mysql
mysql> grant all privileges on epgrec.*to username@localhost identified by 'password';
# mysql -u username -p
mysql> CREATE DATABASE epgrec;


epgrecのインストール
# usermod -s /bin/bash apache
# /etc/init.d/atd start
# chkconfig atd on

# cd /var/www/html
# git clone git://git.sourceforge.jp/gitroot/epgrec/epgrec.git
# cd epgrec
# cp config.php.sample config.php

# vi config.php
※受信地域に合わせて $GR_CHANNEL_MAP を修正する
http://www.maspro.co.jp/contact/bro/bro_ch.html
"識別文字列" => "チャンネル番号"

# cp do-record.sh.pt1 do-record.sh

# chown -R apache.apache /var/www/html/epgrec
# chmod -R 777 /var/www/html/epgrec

設定
http://"サーバのIP"/epgrec/index.php

cronでEPG取得の設定
# vi /etc/cron.d/getepg
29 */2 * * *   apache   /var/www/html/epgrec/getepg.php


UDPストリーミングでリアルタイム視聴する
$ recpt1 --udp --addr クライアントのIP --port ポート --b25 --strip チャンネル番号 - /dev/null

クライアントPCからVLCなどで udp://サーバのIP@:ポート で視聴
Ctrl+で終了するか$ ps auxでPIDを確認してkill -9 PIDで終了。 


わざわざコマンドを打ち込んでチャンネル変更するのも面倒なのでチャンネル変更用のPHPファイルを作る
$ vi /var/www/html/epgrec/rtplay.php

<?php
if(isset($_POST['ch'])){
$descriptorspec = array();
$pipes = null;
$ch = $_POST['ch'];
$port = $_POST['port'];
$addr = $_POST['ip'];
$cmd = "recpt1 --udp --addr $addr --port $port --b25 --strip $ch - /dev/null &";
$process = proc_open($cmd,$descriptorspec,$pipes);
$status = proc_get_status($process);
};
if(isset($_POST['exit'])){
system("kill -9 {$_POST['exit']}",$out);
};
?>
<html>
<h3>recpt1操作</h3>
<form method="post" action="rtplay.php">
<table>
<tr>
<td>チャンネル</td>
<td>
<SELECT size="3" name="ch">
<OPTION value="14" selected>テレ玉1</OPTION>
<OPTION value="30">チバテレ1</OPTION>
<OPTION value="32">J:COMチャンネル</OPTION>
<OPTION value="18">tvk1</OPTION>
<OPTION value="16">TOKYO MX1</OPTION>
<OPTION value="13">J:COMテレビ</OPTION>
<OPTION value="27">NHK総合1・東京</OPTION>
<OPTION value="26">NHKEテレ1東京</OPTION>
<OPTION value="25">日テレ1</OPTION>
<OPTION value="22">TBS1</OPTION>
<OPTION value="21">フジテレビ</OPTION>
<OPTION value="24">テレビ朝日</OPTION>
<OPTION value="23">テレビ東京1</OPTION>
<OPTION value="28">放送大学1</OPTION>
</SELECT>
</td>
</tr>
<tr>
<td>ポート</td>
<td>
<SELECT size="3" name="port">
<OPTION value="1234" selected>1234</OPTION>
<OPTION value="1235">1235</OPTION>
<OPTION value="1236">1236</OPTION>
<OPTION value="1237">1237</OPTION>
</SELECT>
</td>
</tr>
<tr>
<td>IPアドレス</td>
<td>
<input type="text" name="ip" value="192.168.0.2">
</td>
</tr>
<tr>
<td><input type="submit" value="起動"></td>
</tr>
</table>
</form>
<p><?php
if(isset($_POST['ch'])){
echo $cmd;
};
?></p>
<form method="post" action="rtplay.php">
<input type="text" name="exit" value="<?php echo $status['pid']+1; ?>">
<input type="submit" value="終了">
</form>
</html>
recpt1の起動とkillするだけのガバガバPHP。エラーとか出さないために極力簡単に書いた。recpt1ctlでチャンネル変更とかできるっぽいけどとりあえず視聴できればよし。

ps aux | grepとかで起動中のプロセス確認してチューナー取り合いしないようにしたり録画中だったら触らないようにとかできそうだけどそこまでするなら改変版recpt1使ったほうが楽そう。

コメント

このブログの人気の投稿

fontconfigの設定

VLCでBlu-rayを再生

UEFIのブートオーダーを一時的に変更する