長々と続けてきた録画サーバ構築。今回、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スキップの連携や視聴環境側の準備が残っているけどね。という訳で秋には完成させたいなあと思いつつ、まだまだ続く!
yamamotoと申します。
px_drvの情報ありがとうございます。
現在、PT3 RevAで稼働させているのですが、いつ壊れるかわからないので、
PX-Q3PEの情報を集めているところでした。
なんかいけそうですね。
yamamotoさん
最近ようやく運用を始めたのですが、自分の環境では普通に動作しています。
現在はShuttle SH67h3(IvyBridge)機にホストOSとしてCentOS7.2を入れて、
epgrec用のCentOS6.7をゲストOS(KVM)として使っています。
ご参考になれば幸いです。
龍山(ryuzan)と申します。
pt3とpt2をPCに設置して稼働させいたのですがある日PCI-EXがひとつ壊れたので
オークションでpt3とpt2を売って(3万円)px-q3pを買いました(2万円)
おかげで何とかepgrec-unaで録画できるようになりました。
Centos7はpx_drvを認識しないのですね。6.8環境で構築しました。
ひとつ教えてほしいのですがシステムリブートすると録画ができなくなります。
何度かpx_drvのパーミッションを変更すると録画できるようになるのですが、
対応をご教示いただければ幸甚です。
龍山様
改めて自分の記事を見返してみると、起動時のドライバ読み込み方法に触れていないですね。
もし、ドライバの自動読み込みを行いたいということでしたら以下の方法を試してみて下さい。
尚、rootユーザーで作業、git cloneしたpx_drvが/usr/local/srcにあると仮定させて頂きます。
—-
cp /usr/local/src/px_drv/driver/pxq3pe_dtv.ko /lib/modules/`uname -r`/kernel/drivers/video
depmod
—-
これで起動時に自動でPX-Q3PEのドライバを読み込むようになると思います。
ただし、キャラクタデバイス(/dev/pxq3pe*)のパーミッションはおそらく不足してしまいます。
/etc/rc.d/rc.local等でotherグループにパーミッションを付与するか、あるいは
セキュリティ的に問題ないようでしたら対象ユーザーをrootグループに所属させて下さい。
起動時の問題は幾つか思い当たるものがあるため、意図した回答でなかったらご容赦下さい。
お礼のコメントが遅くなりすみません。
ご指摘の方法でドライバーのインストールを行ったので
起動時の読み込みは問題なく行われいます。テスト録画も問題ないようですので
visudo でnginxにroot権限を与えてみます。ただ現在は順調に稼働していますので
再起動の機会ないのでその時に確認してご報告します。
予断ですが受診環境はとてもデリケートですね。アンテナケーブルと減衰器を
購入して3個の減衰器を試したけど上手くいかず結局手製のアンテナケーブルで
ばっちり受診出来ました(BS,CSはアバウトでも大丈夫?)
CMカットはホームページを参考にしてcomskip.rbで出来ましたが一括処理に苦慮しています。