#はじめに
今回の構成は、すでにある録画サーバーのB-CASカードを間借りしてTVサーバを立ち上げます。
うまくできればいずれ旧サーバーを退役させたい。
#まずは録画できるところまで
まず、コマンドラインで録画できるところまでやります。
このあとmirakrun/chinachuを入れてTVサーバー化します。
##作業用ディレクトリを掘る
まずは、作業用のディレクトリを作りましょうか。なんでもいいですが、
mkdir ~/tvserver
ぐらいで。
cd ~/tvserver
で作ったディレクトリに入っておきましょう。
##PX-S1UDのドライバのインストール
ドライバはPLEXにあるドライバをとってきて、その中にあるisdbt_rio.inpというファイルを/lib/firmware/の下に置くだけです。
なぜかx64/amd64のドライバでOKです。
wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip
unzip PX-S1UD_driver_Ver.1.0.1.zip
sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware/
##カードリーダードライバインストール
今回カードリーダは本体につなぎませんが、これ入れないとこのあとのlibarib25インストールとかができないので入れます。
sudo apt-get install build-essential git
sudo apt-get install pcscd libpcsclite-dev libccid pcsc-tools
#B-CASデコードライブラリのインストール
libarib25をコンパイルするのにcmakeを使うのでcmakeをインストールします。また、cmakeするために、g++,automake,autoconfが必要なので、それも入れておきます。
sudo apt install cmake g++
sudo apt install automake autoconf
wget https://github.com/stz2012/libarib25/archive/master.zip -O libarib25.zip
unzip libarib25.zip
cd libarib25-master
cmake .
make
sudo make install
移動したディレクトリから戻っておきます。
cd ~/tvserver
#B-CASクライアントのインストール
WindowsでBonCasProxyとか呼ばれているものですね。
git clone https://bitbucket.org/gn64/rec10.git
cd rec10/b25-remote
make
sudo make install
移動したディレクトリから戻っておきます。
cd ~/tvserver
このライブラリは以下の環境変数を参照して動きます。
※以下は192.168.0.50のコンピュータでBonCasLinkのサービスがポート6900で動いている想定での例。
export LD_PRELOAD=/usr/local/lib/b25-client.so
b25-client.soのパス
export B25_SERVER_IP=192.168.0.50
BonCasLinkサーバが動いているPCのIPアドレス
export B25_SERVER_PORT=6900
BonCasLinkのサーバのポート番号
#録画用コマンドのインストール
recdvbコマンドをインストールします
wget http://www13.plala.or.jp/sat/recdvb/recdvb-1.3.2.tgz
tar xvzf recdvb-1.3.2.tgz
cd recdvb-1.3.2
sudo chown -R $(whoami) .
./autogen.sh
./configure --enable-b25
EXTRA_SID=1 make
sudo make install
ここでさっきのb25-remoteを使って動かせるようにrecdvbをラッピングしたシェルを作ります
注意:chinachuなどの録画アプリは、録画コマンドの強制停止にkillコマンドを発行するようですが、
ラッピングシェルをkillすることになるので、本体のrecdvbがゾンビ化してしまいチューナーを掴みっぱなしにしてしまいます。
なので別の方法を検討中。まずは/etc/environmentに前述の環境変数を設定してみるも、
コマンドラインでrecdvb起動した時は、ちゃんと環境変数を読み込んでデコードできるのに、
chinachu(というかMirakurun)からの実行ではうまく環境変数を読み込んでくれない。
2020/3/17追記
pm2で環境変数の変更が反映されない時の解決策にあるように、pm2でmirakurunやchinachuのrestartをしてみたが、それでもダメ。手詰まり気味。
cd /usr/local/bin
好きなエディタで以下の様に入力
※以下は192.168.0.50のコンピュータでBonCasLinkのサービスがポート6900で動いている想定での例。
sudo vi recdvb_remote
export LD_PRELOAD=/usr/local/lib/b25-client.so
export B25_SERVER_IP=192.168.0.50
export B25_SERVER_PORT=6900
/usr/local/bin/recdvb "$@"
※exportは要らないかもしれない
sudo chmod +x recdvb_remote
##まずは録画できるか確認
recdvbコマンドで録画がうまく行くか試します。
このあとの予約録画システムなどは、このコマンドを起動するので、これが動かないと話になりません。
※以下の32というのはチャンネルです。以下のページを見て、お住まいの地域に合わせて変えてね。
マスプロアンテナのページ
※10は録画秒数です
recdvb_remote --b25 --strip 32 10 ~/test.m2ts
うまく行くと以下のようなメッセージを出して動きます。
using B25...
enable B25 strip
pid = 27208
device = /dev/dvb/adapter0/frontend0
Using DVB card "Siano Mobile Digital MDTV Receiver"
tuning to 587143 kHz
polling..ok
SNR: 0
Recording...
Recorded 10sec
b-casデコードがうまくできていないと
using B25...
enable B25 strip
pid = 26923
device = /dev/dvb/adapter0/frontend0
Using DVB card "Siano Mobile Digital MDTV Receiver"
tuning to 587143 kHz
polling..ok
SNR: 250
bcas->init failed
Cannot start b25 decoder
Fall back to encrypted recording
Recording...
Recorded 10sec
おそらく環境変数の設定が間違っている
mirakurun/chinachu編に続く...