CentOS+Mirakurun+EPGStationで録画サーバを構築した
はじめに
今回CentOS上に録画サーバを構築したので、そのメモも兼ねて残しておく。
録画鯖を構築する前提としてPCに挿せるTVチューナ及びB-CASカードが必要だ。
私はPX-W3PE4というものを使用している。
PLEX 地上デジタル・BS・CS対応TVチューナー PX-W3PE4
- 発売日: 2017/04/19
- メディア: Personal Computers
また、B-CASカード読み込みのためのICカードリーダーにはSCR3310/v2.0を使用した。
SCM ICカードリーダー/ライター B-CAS・住基カード対応 SCR3310/v2.0 【簡易パッケージ品】
- メディア: エレクトロニクス
手順
やったことを書いていく。
OSインストール
まずCentOSをインストールする。バージョンは7.6のミニマルでインストールした。
まぁ、ここは普通にやるだけ。一応アップデートとかもしておこう。
EPELリポジトリ設定
# yum install epel-release
後々必要なものをインストール。
# yum --enablerepo=epel install dkms
開発環境構築
ビルドとかに必要なので。
# yum install wget git unzip bzip2 gcc gcc-c++ make autogen automake kernel-devel patch perl-ExtUtils-MakeMaker libtool openssl-devel boost-devel cmake bzip2-devel freetype-devel fontconfig-devel fribidi-devel mercurial nasm
node.jsインストール
バージョン10の最新版を入れる。
まずリポジトリを追加し、インストールする。
# curl -sL https://rpm.nodesource.com/setup_10.x | bash - # yum install nodejs
バージョン10が入ったのを確認する。
# node -v v10.15.1
Mirakurunではpm2というものが必要なので入れておく。
# npm install pm2 -g
カードリーダー設定
# yum install ccid pcsc-lite-devel # mkdir ~/src # cd ~/src # wget http://ludovic.rousseau.free.fr/softwares/pcsc-perl/pcsc-perl-1.4.14.tar.bz2 # tar xvf pcsc-perl-1.4.14.tar.bz2 # cd pcsc-perl-1.4.14 # perl Makefile.PL # make # make install # cd ~/src # wget http://ludovic.rousseau.free.fr/softwares/pcsc-tools/pcsc-tools-1.5.3.tar.bz2 # tar xvf pcsc-tools-1.5.3.tar.bz2 # cd pcsc-tools-1.5.3 # ./configure # make # make install
これでカードリーダー周りの設定は完了。
カードリーダーを接続して動作確認する。
# systemctl enable pcscd # systemctl start pcscd # pcsc_scan 略 Japanese Chijou Digital B-CAS Card (pay TV)
B-CASなんちゃらと出たらOK。
Ctrl+Cで落ちよう。
arib25ライブラリ導入
受信したテレビ放送の復号に使うライブラリをインストールする。
# cd ~/src # git clone https://github.com/stz2012/libarib25.git # cd libarib25 # cmake . # make # make install # echo /usr/local/lib64 > /etc/ld.so.conf.d/usr-local-lib.conf # ldconfig
TVチューナの非公式ドライバ導入
これを導入する。
ファームウェアファイルの用意
# cd ~/src # git clone https://github.com/nns779/px4_drv # cd px4_drv/fwtool # make # wget http://plex-net.co.jp/plex/pxw3u4/pxw3u4_BDA_ver1x64.zip -O pxw3u4_BDA_ver1x64.zip # unzip -oj pxw3u4_BDA_ver1x64.zip pxw3u4_BDA_ver1x64/PXW3U4.sys # ./fwtool PXW3U4.sys it930x-firmware.bin # mkdir -p /lib/firmware # cp it930x-firmware.bin /lib/firmware/ # cd ..
dkmsを使ってドライバのインストール
# cp -a ./ /usr/src/px4_drv-0.1.0 # dkms add px4_drv/0.1.0 # dkms install px4_drv/0.1.0
再起動しデバイスファイルが作られているのを確認する。
# reboot # ls -l /dev/px4* crw-rw-r--. 1 root video 244, 0 2月 21 11:44 /dev/px4video0 crw-rw-r--. 1 root video 244, 1 2月 21 11:44 /dev/px4video1 crw-rw-r--. 1 root video 244, 2 2月 21 11:44 /dev/px4video2 crw-rw-r--. 1 root video 244, 3 2月 21 11:44 /dev/px4video3
こんな感じで表示されたら成功。
録画コマンドをインストール
# cd ~/src # wget http://plex-net.co.jp/download/linux/Linux_Driver.zip # unzip Linux_Driver.zip # cd Linux_Driver/MyRecpt1/MyRecpt1/recpt1 # sed -i".org" 's/-DTV/video/g' pt1_dev.h # make clean # sh ./configure --enable-b25 # make # make install
インストールできたので録画を試してみよう。下記コマンドでNHKを10秒間録画してみる。
recpt1 --b25 --strip 27 10 ~/test.ts
ユーザのホームディレクトリにtest.ts
として保存される。一応視聴できるか確認しておこう。
Mirakurunの導入・設定
# npm install mirakurun -g --unsafe --production # npm install rivarun -g # npm install arib-b25-stream-test -g --unsafe
これでインストールは完了。
下記コマンドで動作確認してみる。
# pm2 status
mirakurun-serverがonlineになってたらOK。
下記コマンドでチューナーの設定をする。
# mirakurun config tuners
内容は以下の通り。
- name: PX4-S1 types: - BS - CS command: recpt1 --device /dev/px4video0 --lnb 15 <channel> - - decoder: arib-b25-stream-test isDisabled: false - name: PX4-S2 types: - BS - CS command: recpt1 --device /dev/px4video1 --lnb 15 <channel> - - decoder: arib-b25-stream-test isDisabled: false - name: PX4-T1 types: - GR command: recpt1 --device /dev/px4video2 <channel> - - decoder: arib-b25-stream-test isDisabled: false - name: PX4-T2 types: - GR command: recpt1 --device /dev/px4video3 <channel> - - decoder: arib-b25-stream-test isDisabled: false
一度Mirakurunを再起動し、地デジのチャンネルスキャンを行う。BS・CSは自動スキャンには対応してないらしい?
# mirakurun restart # curl -X PUT "http://localhost:40772/api/config/channels/scan"
時間がかかるので気長に待とう。
[追記] BS・CSのチャンネルスキャンについて
MirakurunはデフォではBS・CSのチャンネルスキャンに対応していないぽいです。
そのため、下記サイトのスクリプトを使用させてもらいました。
[追記終わり]
チャンネルスキャンが終わったらもう一度再起動して動作確認をしてみる。
# mirakurun restart # rivarun --list | sed 's/},/},\n/g' ここにスキャンしたチャンネルとか表示されるはず。 # rivarun --b25 --sid 1024 --ch GR/27 15 ~/test.ts status: 200
status200と出てユーザディレクトリにNHKの録画ファイルが保存されていれば成功。
ログローテートの設定をしておく。
# pm2 startup # pm2 install pm2-logrotate # vim /etc/logrotate.d/mirakurun
中身は以下の通り。ログは毎週切り替え1年保存する。
/usr/local/var/log/mirakurun.stdout.log /usr/local/var/log/mirakurun.stderr.log /{ compress rotate 53 missingok notifempty }
EPGStationの導入・設定
まずffmpegを入れる。
ここの自動ビルドスクリプトを使用した。
mariadbも入れる
# yum install mariadb mariadb-server # vim /etc/my.cnf [mysqld] 色々 character-set-server=utf8 ↑これを追加 # systemctl enable mariadb # systemctl start mariadb # mysql_secure_installation よしなに設定する
mariadbに入りDBとユーザを作っておく。
# mysql -u root -p > create database epgstation; > grant all on epgstation.* to epgstation@localhost identified by 'ぱすわーどを入れる';
EPGStationのインストール。
# cd ~/src # git clone https://github.com/l3tnun/EPGStation.git # cd EPGStation # npm install # npm run build # cp config/config.sample.json config/config.json # cp config/operatorLogConfig.sample.json config/operatorLogConfig.json # cp config/serviceLogConfig.sample.json config/serviceLogConfig.json
設定を編集する。
# vim config/config.json 以下のように変更 - "serverPort": "8888", + "serverPort": "80", これはお好みで - "dbType": "sqlite3", + "dbType": "mysql", - "ffmpeg": "/usr/local/bin/ffmpeg", - "ffprobe": "/usr/local//bin/ffprobe", + "ffmpeg": "/usr/local/ffmpeg_build/bin/ffmpeg", + "ffprobe": "/usr/local/ffmpeg_build/bin/ffprobe", 以下追加 "streamFilePath": "/tmp", "recirded": "/mnt/nas/TVCap_buf(ここは適当に)", "mysql": { "host": "localhost", "port": 3306, "user": "epgstation", "password": "さっき設定したぱすわーど", "database": "epgstation", "connectTimeout": 20000, "connectionLimit": 10 }
EPGStationの起動
# pm2 startup # pm2 start dist/server/index.js --name "epgstation" # pm2 save
ここまでできたらブラウザでサーバのIP:ポート番号
にアクセスしてみる。
やったね!とりあえず成功です。
実運用に入る前にライブ視聴や録画が実際にできるか確認しておこう。
参考
録画サーバ構築の前準備(CentOS 7編)、Chinachu・epgrec UNA対応 | 自分に負けないラボラトリー
PLEX社製TVチューナーの非公式Linuxドライバインストール方法 | 自分に負けないラボラトリー
Linuxで録画鯖を建てる #03「CentOS7.5 + Mirakurun + Chinachu」 - ゎぃゎぃのおもちゃ箱