Ubuntu 18.04 + EPGStation + PX-W3PE4で録画環境を構築した

Computer

この記事はnasne再販決定前に書いた記事です。nasne再販が決まって嬉しい限りです。

どうも〜Yukiです。

だいぶ前の話になりますが…5年ほど使ってきたnasneが販売終了となりました。長年使ってきたレコーダーにお別れをするのは悲しいですが、、

nasneほど安くて多機能なレコーダーというのは、同じ価格帯ではまず見ることが出来ません。他のハイエンド高価格帯レコーダーと比較しても全く見劣りすることなく機能が充実していて、スマホ・タブレット・PCなどからストリーミング再生、書き出しして外出先で見る、また外出先からもストリーミングでテレビが見られるという機能まで持っています。

SONYと中でもXperia Z4 Tabletと並んでトップクラスにお気に入りのデバイスでした。そんな神機が販売終了ということになってしまい、いつかはtorne mobileなどのスマホアプリも提供を終了し見られなくなってしまうので、今回はテレビ録画が出来るサーバーをUbuntuで建てました。

構築した環境

まずUbuntuをインストールしたサーバーのスペックです。

CPU:Core i3 9100
マザーボード:H310のAsrockのやつ
RAM:8GB
ストレージ:NVMe SSD 128GB(OS用)、WD 6TB HDD(映像保存用)

チューナー:PLEX PX-W3PE4
カードリーダー: ACR39-NTTCom

CPUはベタにサーバーCPUのi3。マザボのチップセットでケチりました。メモリは8GBで十分です。ストレージは2つ積んでいますが、M.2 SSDはOS用にしか使いません。

6TBのHDDですが、NAS用ではありません。ケチっちゃいました。24時間起動しているファイルサーバーなので、寿命は短いかもしれません。

最後に要であるチューナーですが、PLEXのPX-W3PE4にしました。地デジ2チャンネル・BSCS2チャンネルの計4チャンネルを同時に録画出来ます。僕は地デジしか使ってません。内蔵カードリーダーはありますが、これは動かないのでカードリーダーを別途購入しましょう。

それでは作業を始めますが、まずはIPアドレスを固定します。OSによって微妙に違うので記載しませんが、各人で設定してください。

ライブラリインストール

まずは必要なライブラリをインストールします。私はいつも、Ubuntuを再インストールしたら実行しているコマンドがあるので、それをご紹介します。

sudo apt -y install autoconf build-essential cmake curl git-core libssl-dev libtool libboost-all-dev pkg-config yasm ffmpeg sqlite3 rtmpdump swftools libxml2-utils libavcodec-extra

これで今回必要なコマンドがインストール出来ます。PM2なんかも必要ですが、ここでは入れていません。

次にユーザーをvideoグループに追加します。

// USER_NAMEをvideoグループに追加する
sudo gpasswd -a USER_NAME video

ユーザー名は適宜変えてください。

カードリーダーのドライバをインストール

カードリーダーのドライバをインストールします。W3PE4内蔵のカードリーダーではありませんので注意。

sudo apt install pcscd libpcsclite-dev libccid pcsc-tools

PX-W3PE4の非公式ドライバをインストール

PX-W3PE4には公式ドライバと非公式ドライバが用意されています。非公式ドライバの方が安定しているらしいので、こちらを使用します。
いくつかgitしていますが、mkdirでフォルダ分けしないとメンドクサイので、ちゃんとフォルダ分けしてgitしましょう。

git clone https://github.com/nns779/px4_drv.git
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
sudo mkdir -p /lib/firmware
sudo cp it930x-firmware.bin /lib/firmware/
cd ../

ドライバが認識されているか確認します。

lsmod | grep -e ^px4_drv
px4_drv                81920  0

px4_drv 何らかの数字が表示されればOKです。

libaribのインストール

libarib25をインストールします。

git clone https://github.com/stz2012/libarib25.git
cd libarib25
cmake .
make
sudo make install

recpt1をインストール

W3PE4の録画コマンドであるrecpt1をインストールします。

git clone https://github.com/epgdatacapbon/recpt1.git
cd recpt1/recpt1
./autogen.sh
./configure --enable-b25
make
sudo make install

Node.js、PM2、Mirakurunをインストール

いよいよMirakurunをインストールします。
その前にNods.jsとPM2が必要なのでインストールします。

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt install -y nodejs
sudo npm install pm2 -g
sudo pm2 startup
sudo npm install mirakurun -g --unsafe --production
sudo npm install arib-b25-stream-test -g --unsafe

Mirakurunの設定

Mirakurunがインストール出来たら、チャンネルスキャンの前にtuner設定をする必要があります。

sudo EDITOR=nano mirakurun config tuners

私の場合、以下のようにしました。

- name: PX-W3PE4-S1
  types:
    - BS
    - CS
  command: /usr/local/bin/recpt1 --device /dev/px4video0 --lnb 15 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: true

- name: PX-W3PE4-S2
  types:
    - BS
    - CS
  command: /usr/local/bin/recpt1 --device /dev/px4video1 --lnb 15 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: true

- name: PX-W3PE4-T1
  types:
    - GR
  command: /usr/local/bin/recpt1 --device /dev/px4video2 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

- name: PX-W3PE4-T2
  types:
    - GR
  command: /usr/local/bin/recpt1 --device /dev/px4video3 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

- name: TBS6922
  types:
    - SKY
  command: szap-s2j -c /usr/local/etc/szap-s2j.conf -l <satelite> -S 1 -p -r -M 5 -C 35 <channel>
  dvbDevicePath: /dev/dvb/adapter0/dvr0
  decoder: arib-b1-stream-test
  isDisabled: true

BS/CSは使えないのでfalse、地デジ2チャンネルのみtrue。recpt1はきちんと絶対パスを入力し、デバイスパスもきちんと設定しました。
前に相対で設定した時、上手く動かなかったので。

W3PE4系列の方は上記設定をコピーでもいいかもしれません。

チューナーの設定が出来たら、mirakurunを再起動します。

sudo mirakurun restart

チャンネルスキャン

tunerの設定が出来たらチャンネルスキャンをします。地デジのみ対応で、BS/CSでは自分で設定する必要があります。ですがBS/CSはチャンネルの値が全国同じなので、ネットからダウンロードするだけで良さそうです。

curl -X PUT "http://localhost:40772/api/config/channels/scan"

かなり長いです。tunerが認識されていない旨のエラーが出ていたら失敗です。最初の1文でそれが表示されたら、Ctrl + Cで停止させ、tuner設定を見直すか、ドライバを入れ直すかしてください。
Error: stream has closed before get networkなどが最初の1文で表示されたら、チューナーが認識されていることが確認出来ます。その後しばらく放置して、チャンネルがちゃんとスキャンされているか確認しましょう。

EPGStationのインストール

録画管理ソフトであるEPGStationをインストールします。Chinachuでも良かったのですが、こちらの方が設定が多そうなのでこれにしました。

// まずは必要なライブラリがインストールされているかを確認します。ffmpegは記事上部のライブラリインストールでインストールしています。インストールしていなければ適宜インストールしてください。
node --version
curl -o - http://<MirakurunURL>:<Port>/api/version
ffmpeg -version
python --version
gcc --version

// EPGStationをインストール
git clone https://github.com/l3tnun/EPGStation.git
cd EPGStation
npm install --no-save
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

// EPGStation自動起動
sudo pm2 startup
pm2 start dist/server/index.js --name "epgstation"
pm2 save

SQLite3での正規表現検索

EPGStationはデータベースが必要です。今回は、ライブラリインストールの項でSQLite3をインストールしています。EPGStationはSQLite3がデフォルトで設定されているため、設定を少なく出来るからです。
ですが、SQLite3はそのままでは正規表現での検索が出来ません。そのために設定する必要があります。

ソースコードのダウンロード

SQLite Download Pageに飛びます。

sqlite-amalgamation-*.zip と sqlite-src-*.zip をダウンロードし、適当な場所に解凍します。

ソースコードの配置

sqlite-src-*/ext/misc/regexp.c を sqlite-amalgamation-* へコピーします。

ビルド

sqlite-amalgamation-* へ移動し以下のコマンドを実行します。

gcc -g -fPIC -shared regexp.c -o regexp.so

ファイルの配置

生成された regexp.so (Linux), regexp.dylib (macOS), regexp.dll (Windows) を適当な場所へ配置します。

EPGStationの修正

EPGStationのconfig.jsonに下記の項目を追加します。

    "sqlite3": {
        "extensions": [
                        "/hoge/regexp.so"
                      ],
        "regexp": true
    },

// EPGStationを再起動
pm2 restart epgstation

EPGStationでの毎週録画

長々と書き連ねましたがこれで作業は終了です。

ブラウザから http://IPAddress:8888/ にアクセスをして、EPGStationのUIが表示されたら成功です。
初回はEPG取得に時間がかかるので、ブラウザを開いたまま放置します。

しばらくすれば、番組表もしっかりと表示されます。

EPGStationでの毎週録画のやり方は、「ルールを追加する」というものです。

番組表から好きな番組を選び、ルール作成をします。設定項目は非常に多く、特番にも対応出来ます。

トップのキーワードは、番組名です。サブタイトルが入っていることがあるので、消しておきましょう。

対象時刻は番組の長さに上手く収まるように設定します。

曜日は全てを指定すると、別日で放送される特番などにも対応出来ます。

ディレクトリは、その番組のTSファイルを保存するディレクトリです。

ファイル名形式は、生成されるTSのファイル名形式です。こちらから設定するよりも、config.json 詳細マニュアルを見て設定した方が良いかもしれません。

エンコードは、モードをH264に設定することでmp4形式のファイルが作成されます。その下のディレクトリは、mp4を保存する場所となります。

一週間使ってみた感想

この環境で一週間ほど使用してみました。

私の環境ではテレ東が全くダメで、ブロックノイズだらけです。ブロックノイズが起きるのはテレ東だけなので、チューナーが悪いというわけではなさそうです。

調べたところ、電波が弱いとブロックノイズは起こるようだったので、ブースターを噛ませてみました。

しかし、今度は逆に全てのチューナーが使えなくなってしまい、全く録画出来なくなってしまいました。

幸い再インストールしたら直りました。チューナーが壊れてなくてよかったですが、もうブースターは使えません。

とまあ悪いところもありますが、私は金曜ロードSHOWと脱力タイムズが録画出来ればモンクはないです。mp4にエンコードしたあとTSファイルを自動削除する設定もあるので、容量も圧迫しなくて済みそうです。

6TBのHDDが埋まるぐらい映画と脱力タイムズを録画したいですね~。

それでは

コメント

  1. 通りすがり より:

    ブースターではなくアッテネーターをつけるとうまく受信できる場合がありますよ。受信レベルが強すぎて逆にうまく行かない時があるようです。

    • Yuki より:

      アンテナ線を半分だけ入れるという物理減衰は試したことあります(笑)。
      情報ありがとうございます。