ubuntu13.10+pt3+epgrecの環境構築


Ubuntu13.10を使ったPT3+epgrecの環境構築をします。

この記事は、最近のBS/CS放送に対応した機能拡張もしてくださっているSTZ版epgrecを利用しています。Ubuntu13.10で利用する上での不都合にもインストール途中で適宜対処し、利用開始できる所までの覚書となります。

最初に、事前に用意するべきハードウェアは次の通りです。

また、『Ubuntu13.10 serverのインストールと初期設定(スクリーンショット有り)』を参考にUbuntu13.10が既にインストール済で必要な開発系ライブラリ等もインストール済みである事とします。既にUbuntu13.10をインストール済みであっても、画像つきで記載していますので、数分で済みますので、簡単に流し読みしてみて下さい。

epgrec環境構築例(本家/STZ版/UNA版)

epgrecの環境構築例が当Blog内に数パターンある為、構成別にまとめました。参考にしてください。

投稿 構成 難易度 コメント
ubuntu+epgrec(UNA版)+pt3環境構築 epgrec(UNA版) + nginx + php5-fpm epgrec(UNA版)インストールの最小構成です。
USBbootするUbuntu-NAS① epgrec+pt3+minidlna+kvm環境を構築する epgrec(UNA版) + nginx + php5-fpm USBメモリ(SSD可)にUbuntuをインストールし、録画はRAID構成のHDDに行っています。単純にディスクの延命対策と低消費電力化するテクニックを使っているだけなので、USBメモリはSSDと読み替えてもらってOKです。②、③の記事まで実行するとminidlnaやsamba、KVMまでが同居する環境になります。
ubuntu13.10+epgrec(本家)+pt3+nginx+php5-fpm 環境構築 epgrec(本家) + Apache 本家です。安定して運用出来ます。開発が止まっているようです。
ubuntu13.10+pt3+STZ版epgrec+nginx+php5-fpmの環境構築 epgrec(STZ版) + nginx + php5-fpm STZ版はepgrecやrecpt1等をまとめて公開してくれているので、組合せによるトラブルが出にくいので、構築しやすいです。最近まではSTZ版をメインに利用していました。今はUNA版に移りつつあります。
ubuntu13.10+pt3+epgrecの環境構築 epgrec(STZ版) + Apache 上記のApache版。nginxとApacheを比べるとnginx上に構築した方がweb画面の遷移が速いが、Apacheの方がセットアップは楽なのでnginxで挫折した方向け
消費電力30W以下 Ubuntu13.04&PT2/PT3&epgrec サーバを作る epgrec(STZ版) + Apache PT2を最新カーネルでビルドする方法も一緒に書いています。
組み合わせを選ぶ基準として
epgrecは本家、STZ版、UNA版と色々な版を開発者の方が出して下さっていますが、開発が既に止まっているものもあります。現状で開発が活発なのはUNA版となります。3種ともに比較させて貰いましたが、構築が一番楽なのがSTZ版、便利に使えるのがUNA版、本家は安定運用実績が多い為、カスタマイズ(プログラム修正)したい場合に向くと言う感想を持っています。
コメント欄について
各記事のコメント欄で、コメントの最初に『【雑談】』と書いてもらえれば、情報交換の為に閲覧者間での雑談に使ってもらって構いません。メールアドレスは公開されないのでフリーのメアドでも使って下さい。誹謗中傷はしない方向でお願いします。

PT3のドライバやカードリーダ、recpt1等のインストール

カードリーダの設定

 sudo apt-get install pcscd libpcsclite1 libpcsclite-dev libccid pcsc-tools
 pcsc_scan | grep "Japanese Chijou Digital"

BCASカードが認識されていることを確認。

 Japanese Chijou Digital B-CAS Card (pay TV)

PT3のドライバのインストール

sudo su -
echo "blacklist earth-pt1" >> /etc/modprobe.d/blacklist.conf
git clone https://github.com/m-tsudo/pt3.git
cd pt3/
make clean && make
sudo make install
sudo reboot

再起動後にpt3video*がある事を確認

ls -la /dev/pt3*
crw-rw-rw- 1 root video 248, 0 10月 20 20:50 /dev/pt3video0
crw-rw-rw- 1 root video 248, 1 10月 20 20:50 /dev/pt3video1
crw-rw-rw- 1 root video 248, 2 10月 20 20:50 /dev/pt3video2
crw-rw-rw- 1 root video 248, 3 10月 20 20:50 /dev/pt3video3

arib25のインストール

mkdir ~/tmpcd ~/tmp
wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip
unzip c44e16dbb0e2.zip
cd pt1-c44e16dbb0e2/arib25
make && sudo make install

recpt1(stz版)のインストール

cd ~/tmp
git clone https://github.com/stz2012/recpt1.git stz_recpt1
cd stz_recpt1/recpt1
./autogen.sh
./configure --enable-b25
make
sudo make install

録画テスト

ここまでで、一度録画テストを行っておきましょう。エラーが出た場合には、TVケーブルの接続やカードリーダを見直してください。それでも直らなければ、コピペでやってきた場所でエラーが出ていないかを見直してみます。

recpt1 --b25 --strip 27 20 test.ts

epgdumpのインストール

cd ~/tmp
git clone https://github.com/stz2012/epgdump.git stz_epgdump
cd stz_epgdump/
make
sudo make install

epgrecの設定

epgrecではmysql、at、apacheを使いますので、それらの設定を済ませます。

atコマンドが使えるようにする。

sudo vi /etc/at.deny

at.denyにapacheの実行ユーザー名が書かれていると、録画予約に失敗しますので、以下の行を削除します。

www-data

ApacheやMysql、PHP等のインストール

sudo apt-get install apache2 php5 libapache2-mod-php5 php5-cli mysql-server mysql-client php5-mysql

MySQLの設定

別にutf-8を明示的に指定しなくてもいいのですが、後々の為にutf-8にしておきます。
MySQL5.5から多少設定に変更があり、utf-8を使う場合の指定方法は下記のように変わっているようです。

sudo vi /etc/mysql/my.cnf

/etc/mysql/my.cnfの中の[client]と[mysqld]の下に下記の設定を付け加えます。

[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8

 

sudo service mysql restart

MySQLのDBを作成します。

mysql -uroot -p
create database epgrec;
grant all on epgrec.* to epgrec@localhost identified by 'yourpassword';
flush privileges;

epgrecのインストール

下記の様に実施します。

cd /var/www
sudo git clone https://github.com/stz2012/epgrec.git epgrec
sudo chown -R www-data:www-data ./epgrec
cd epgrec

sudo cp do-record.sh.pt1 ./do-record.sh
sudo chmod 777 cache templates_c video thumbs settings
sudo chmod 666 thumbs/index.html video/index.html
sudo chmod 755 do-record.sh
sudo chown www-data:www-data do-record.sh
sudo mv config.php.sample config.php
sudo vi config.php

sudo chown -R www-data:www-data /var/www/epgrec

番組表更新のcronジョブを登録します。

sudo cp cron.d/getepg  /etc/cron.d/

/etc/php5/cli/php.ini 、/etc/php5/apache2/php.iniを編集する。

上記までの設定で番組表を取得しようとした場合、次のようなエラーが発生します。
(他にも、タイムゾーンのエラー等も発生しますので、その対策も一緒にやります。)

PHP Warning:  pcntl_fork() has been disabled for security reasons in /var/www/epgrec/getepg.php on line 21
PHP Warning:  pcntl_fork() has been disabled for security reasons in /var/www/epgrec/getepg.php on line 24
PHP Warning:  pcntl_signal() has been disabled for security reasons in /var/www/epgrec/getepg.php on line 26

pcntl_forkとpcntl_signalがdisable_functionsに設定されていることが原因ですので、そららをコメントアウトしておきます。

sudo vi /etc/php5/cli/php.ini
sudo vi /etc/php5/apache2/php.ini

下記のdisable_functionsをコメントアウト

; disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,

# タイムゾーンの設定箇所を検索して、下記のように設定。
date.timezone = "Asia/Tokyo"

後は、普通にウェブの設定を行います。

ウェブ画面よりのepgrecの初期設定

http://epgrecserver/epgrec

にアクセスして設定を済ませます。画面は下記の通り。

1ページ目

epgrec_1

2ページ目

epgrec_2

3ページ目

epgrec_3

4ページ目

epgrec_4

番組表の取得
ウェブ上からやってもいいのですが、初回はエラーが出た場合に対処しやすいようにコマンドラインから実行します。

sudo su -
su www-data -
/var/www/epgrec/getepg.php

$ ps aux | grep recpt1
# 次のように出ていたら、番組表の取得を始めているので、OKです。
www-data  9163  5.2  0.0 137760  2268 ?        Sl   23:33   0:07 /usr/local/bin/recpt1 --b25 --strip --sid epg BS09_0 180 /tmp/__temp.ts.bs

BSは5分もあれば番組表が出てくるので、5分ぐらいしたら、ブラウザでアクセスします。地デジの方は、(録画時間:60秒+epgdumpとDB登録の処理時間)×局数分なので、15分も待てば番組表が出ていると思います。
CSは・・・非常に長いですw

録画時に番組タイトル等にスペースが入っている場合に、ファイル名が切れる問題の対策

これは、運用していて気付いたのですが、『do-record.sh』の${OUTPUT}がダブルクォートでくくられていないので、録画ファイル名によっては、*.tsとはならずに、中途半端なファイル名で録画されてしまう事がありました。
その対策を行っておきます。

vi /var/www/epgrec/do-record.sh

次のように修正しておきます。

if [ ${MODE} = 0 ]; then
# MODE=0では必ず無加工のTSを吐き出すこと
$RECORDER --b25 --strip --sid epg $CHANNEL $DURATION "${OUTPUT}" > /dev/null
elif [ ${MODE} = 1 ]; then
# 目的のSIDのみ残す
$RECORDER --b25 --strip --sid $SID $CHANNEL $DURATION "${OUTPUT}" > /dev/null

以上で、Ubuntu13.10でのpt3+epgrec(STZ版)の設定は完了です。
もしも、上記の記事に不都合等がありましたら、連絡フォームよりお問い合わせ下さい。
『設定てきた!』や『設定方法に詰まった』等のコメントも頂けると幸いです。

タグ付けされた , . ブックマークする へのパーマリンク.

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>