録画サーバ構築 epgrec UNA+PX-Q3PE 構築編
長々と続けてきた録画サーバ構築。今回、epgrec UNAの環境を作ることでサーバ側の基本的な準備が完成する。とはいえ、クライアントの視聴環境考えたり、CMスキップ考えたり、まだまだ環境の構築は続きそうだけど。epgrec構築の基礎的な部分は多くの人がまとめてくれたので自分はそこを割愛する。PX-Q3PEでepgrecを動かす上での注意点になるべく稿を割く。まず最初の問題がrecpt1にepgrec UNA用のパッチを当てること。これにはrecpt1のソースが必要で、foltiaにあるバイナリを流用という訳にはいかない。ぐぐった結果、github上にpx_drvリポジトリというPX-Q3PE用のrecpt1ソースが存在することを知る。
|
地上波デジタル・BS・CS 8チャンネル同時録画テレビチューナボード PX-Q3PE by Yahoo! ショッピング |
どういう経緯で生まれたものか、その素性をまったく知らないので簡単な動作確認からやってみた。このリポジトリにはPX-Q3PEのドライバとなるカーネルモジュール(pxq3pe_dtv)も同梱されており、流用可能。foltiaで使われているものと全く同じものなので、これを使えばいちいちfoltiaから取り出す必要はなくなる。早速、githubからpx_drvをcloneしてコンパイル。makeされたrecpt1を使ってみる。
git clone https://github.com/...git
cd px_drv/recpt1
aclocal -I .
autoheader
autoconf
./configure --enable-b25
make
make install
recpt1 --b25 --strip 22 10 /tmp/test.ts --device /dev/pxq3pe2
すんなり動いた。素晴らしいソースの共有に大感謝。makeしたrecpt1はfoltiaで利用しているrecpt1バイナリとは別物。このrecpt1ソースに対して、地道にepgrec UNA用パッチを当てていこうとコードを読み始める。あれ、なんかパッチされたコードが既に入っているような。。。epgrec UNAで公開されている最新パッチではなさそうだが、それらしきパッチが当たっているように見えた。試しに本家では存在しないはずの–httpオプションを付けてrecpt1を動かしてみると、これも問題なく動作した。このrecpt1ならそのままepgrec UNAが動くのかも。
続いてepgrec UNA用に必要なepgdumpも用意する。こちらは適当な何かの別館さんで公開しているソースを持ってきてコンパイルするだけ。作業的に特に難しいことはなかった。
tar xzf epgdumpUNA141013.tar.gz -C /usr/local/src
cd /usr/local/src/epgdump
make
make install
|
◇ PLEX/プレクス 地上デジタル/BS・CSクアッドテレビチューナー PCI-Express対応/内蔵型 PX-Q3PE ◆宅
|
最後にepgrec UNA本体となるphpソースをダウンロードする。このダウンロードにはちょっとした謎かけがあり、その答えをキーワードとして指定する必要があるので注意。無事ソースを入手できたら、phpの動作する環境に配置して動かしてみる。うちはnginxとphp-fpm環境。nginxはepelから入れるのでリポジトリを有効化する。php-xmlとphp-processがないとエラーが出て動作しないので入れておく。php-opcacheも入れたが、これは自分の好みなので任意。php.iniにtimezoneを設定する作業も必要。また、DBにはパスワードを設定したユーザーを用意しておかないとセットアップを進められなかった。
yum install --enablerepo=extras epel-release
yum install php php-mbstring php-mysql php-fpm php-opcache php-process php-xml nginx
vi /etc/php.ini
:
date.timezone = "Asia/Tokyo"
mysql -uroot -p
CREATE DATABASE epgrec
CREATE USER 'epgrec' IDENTIFIED BY 'xxxxxxxx';
GRANT ALL ON epgrec.* TO 'epgrec';
quit
これでウェブUIは動き出したが、番組表取得のためのrecpt1がうまく動かず。手元で確認したときには動作していたので嫌な感じ。調べた結果、ウェブからだとnginxユーザーでrecpt1が叩かれるため、デバイスに対するパーミッションが足らずに失敗していた。PX-Q3PEのデバイスファイルにotherの実行権限を与えることで解消した。これで番組表が更新されたので録画予約をしてみる。しかし、予約は出来るが録画は空振り。これも実行ユーザーがnginxであることの弊害で、デフォルトのシェル設定『/sbin/nologin』だとatでのジョブ実行が出来なかった。ユーザーのシェル設定を『/bin/bash』に変更することで録画も動いた。nginxユーザーにログイン許可するのが嫌なら、bashが使える別ユーザーでの運用を考えよう。
chmod 666 /dev/pxq3pe*
usermod -s /bin/bash nginx
これで無事録画も動作するようになったが、録画一覧のページでサムネイルが表示されず、404扱いになってしまっている。epgrecを専用ドメインの/直下で動作させているのが例外的なのかもしれない。自分の環境に対してサムネイルの画像パスが正しくなかったので、recordedTable.phpファイルそのものを修正して対応した。
vi /usr/share/nginx/epgrec/recordedTable.php
:
$arr['thumb'] = '<img src="'.$view_url.$settings->thumbs.'/'.rawurlencode(end(explode( '/', $r['path'] ))).'.jpg" />';
↓
$arr['thumb'] = '<img src="'.$settings->thumbs.'/'.rawurlencode(end(explode( '/', $r['path'] ))).'.jpg" />';
以上で一通りの動作が確認出来た。これで録画環境については一応の完成だ。まだ、エンコードとCMスキップの連携や視聴環境側の準備が残っているけどね。という訳で秋には完成させたいなあと思いつつ、まだまだ続く!