Ubuntu 18.04 + mirakurun + EPGStation 構築 インストール編

録画サーバの構築に手を出し始めたのが3年前。何かしら致命的な問題がある訳ではないものの、サーバを作り変える度に何となく録画サーバの構成も変更してきた。今回はサーバがCentOSからUbuntuになるということで、録画サーバもせっかくなので大きく変更。epgrec UNAからmirakurun+EPGStationに変えてみるつもり。一時期epgrec+mirakurunも試してみたが、自分で修正したコードもつぎはぎだらけだし、UIと実際の振る舞いが乖離してしまっている部分もあって、そろそろ限界に近かった。

VODサービスのおかげで以前ほどテレビ録画をする必要がなくなったのも乗り換える要因の1つと言えるかもしれない。epgrecはphp+mysqlなので、とにかく好き勝手に書き換えることができた訳で。とはいえ、mirakurunの着想は素晴らしく、今後も使い続けたい。残念ながら期待していたchinachu airも出る気配がなさそうなので、mirakurun+EPGStationへ移行することに決めた。尚、Ubuntu上でQSVエンコードを利用可能な状態と仮定する。まだの人は過去の記事をご参照下さい。

以前まではCentOS+lxcでのコンテナ運用だったが、今回はUbuntu+LXDによるコンテナ運用。物理サーバ上のPT3やSCR3310、QSVデバイスをコンテナと共有する。いまどきのUbuntuは標準でPT3のドライバを持っているが、そちらは使わずにいつものドライバを使う。/dev/dvb配下にキャラクターデバイスが存在する場合は、標準ドライバが適用されてしまっている。/etc/modprobe.d/blacklist.confに『blacklist earth-pt3』を書き加えて再起動しておく。キャラクターデバイスがなくなったことを確認した上で、以下の作業を行う。

apt install -y dkms
cd /usr/local/src
git clone https://github.com/m-tsudo/pt3 pt3-driver
cd pt3-driver
chmod 755 dkms.install
./dkms.install
modprobe pt3_drv
ls -l /dev/pt3*

この物理ホスト上に録画サーバ用のコンテナを作ってデバイスを共有していく。/dev/dri配下にハードウェアエンコード用のキャラクターデバイスがある。B-CASカードリーダーは大抵USB接続だと思うが、バスの番号で共有すると順番変わったりすることもあるのでIDで共有する。SCR3310なら04e6:5116になる。録画ファイルを配置するディスクスペースもコンテナに共有する。うちの場合はGlusterFSが物理サーバの/glusterにマウントしてあるので、そのパスを引き渡す。具体的には以下。

lxc launch ubuntu: sv1 
lxc config device add sv1 card0 unix-char path=/dev/dri/card0
lxc config device add sv1 renderD128 unix-char path=/dev/dri/renderD128
lxc config device add sv1 pt3video0 unix-char path=/dev/pt3video0
lxc config device add sv1 pt3video1 unix-char path=/dev/pt3video1
lxc config device add sv1 pt3video2 unix-char path=/dev/pt3video2
lxc config device add sv1 pt3video3 unix-char path=/dev/pt3video3
lxc config device add sv1 scr3310 usb vendorid=04e6 productid=5116
lxc config device add sv1 share disk source=/gluster path=/gluster
lxc restart sv1
lxc console sv1

続いて、arib25のライブラリとrecpt1をインストールする。ここから先はコンテナ内の話になります。

apt install -y automake gpac libpcsclite-dev npm pcscd pcsc-tools pkg-config unzip
cd /usr/local/src
wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip
unzip c44e16dbb0e2.zip
cd pt1-c44e16dbb0e2/arib25
make
make install
ldconfig

cd /usr/local/src
wget http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2
tar xf tip.tar.bz2
cd pt1-17b4f7b5dccb/recpt1
sed -i 's/pt1video/pt3video/g' pt1_dev.h
./autogen.sh
./configure --enable-b25
make
make install

recpt1 --b25 23 20 test.ts

そして、いよいよmirakurunとEPGStationをインストールする。動作確認用にrivarunも入れておく。

npm install pm2 -g
npm install mirakurun -g --unsafe --production
npm install arib-b25-stream-test -g --unsafe
npm install rivarun -g

rivarun --b25 --ch GR/23 10 test.ts

cd /usr/local
git clone https://github.com/l3tnun/EPGStation
cd EPGStation
npm install
npm run build
cd config
mv config.sample.json config.json
mv operatorLogConfig.sample.json operatorLogConfig.json
mv serviceLogConfig.sample.json serviceLogConfig.json
pm2 start /usr/local/EPGStation/dist/server/index.js --name epgstation
pm2 save 

以上でインストールは終わり。それほど戸惑うところはなかったかな。mirakurunとEPGStationはどちらもpm2で管理できる。あとはコンテナ上でQSV対応したffmpegを作って、mirakurunとEPGStationの細かい設定を行えば動き出すはず。何度も作ってるから慣れたもんだけど、やっぱり簡単ではないよなあ。あとはEPGStationに合わせたリアルタイム・エンコーディングの方法も考えないといけないし。とりあえず次回はffmpegの作成かな。やることは物理サーバでやったことと同じだけど。

コメントを残す

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

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)