Ubuntu13.10を使ったPT3+epgrecの環境構築をします。
この記事は、最近のBS/CS放送に対応した機能拡張もしてくださっているSTZ版epgrecを利用しています。Ubuntu13.10で利用する上での不都合にもインストール途中で適宜対処し、利用開始できる所までの覚書となります。
最初に、事前に用意するべきハードウェアは次の通りです。
- PT3カード本体(amazon)
- サーバ(自作PCや格安サーバ(N54L)、HP ProLiant MicroServer N54L、etc…)
- USBカードリーダ(SCR3310-NTTCom or USB-TR HWP119316)
- B-CASカード
- BS/CSアンテナ(衛星放送も見たい場合)
また、『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/pt3video3arib25のインストール
mkdir ~/tmpcd ~/tmp wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip unzip c44e16dbb0e2.zip cd pt1-c44e16dbb0e2/arib25 make && sudo make installrecpt1(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.tsepgdumpのインストール
cd ~/tmp git clone https://github.com/stz2012/epgdump.git stz_epgdump cd stz_epgdump/ make sudo make installepgrecの設定
epgrecではmysql、at、apacheを使いますので、それらの設定を済ませます。
atコマンドが使えるようにする。
sudo vi /etc/at.denyat.denyにapacheの実行ユーザー名が書かれていると、録画予約に失敗しますので、以下の行を削除します。
www-dataApacheやMysql、PHP等のインストール
sudo apt-get install apache2 php5 libapache2-mod-php5 php5-cli mysql-server mysql-client php5-mysqlMySQLの設定
別に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=utf8sudo service mysql restartMySQLの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 26pcntl_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ページ目
2ページ目
3ページ目
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.bsBSは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版)の設定は完了です。
もしも、上記の記事に不都合等がありましたら、連絡フォームよりお問い合わせ下さい。
『設定てきた!』や『設定方法に詰まった』等のコメントも頂けると幸いです。
ピンバック:導入編 – PT3で地デジサーバを構築 | インフラエンジニアになりたいSIerのwebサイト
USBカードリーダはSCR3310-NTTComと USB-TR HWP119316のどちらでも設定は同じなんですか?
当方はSCR3310-NTTComで検証していますが、USB-TR HWP119316で設定する人もいるので、問題ないと思います。
linuxの初心者です。 素晴らしいtutorialありがとうございます。! debian linux 8.1 64bitでsetup中ですがうまく出来ません。よろしければdebian 8.1用tutorialのお願いもできますか?^^
==========================