===== 録画サーバ =====
=== hardware ===
* Raspberry Pi 4
* KTV-FSUSB2
* KTV-FSPCIE
=== software ===
^ ^使用ソフト^機能^
|フロントエンド|EPGStation|GUI,WEBUI,予約管理|
|バックエンド|mirakurun|APIサーバ(RESTインターフェース),チューナー,チャンネル管理|
|録画プログラム|recfsusb2n|チューナ機器からデータを読み出すコマンド|
フロントエンドには,Chinachuというのもあるが,EPGStationの方が開発が活発のようなのでEPGstationを選んだ
mirakurunはrecfsusb2nを呼び出して,テレビのデータを取り出す。EPGStationはmirakurunのAPIを用いて,データを取得する。テレビのストリーミングのデータすら,APIで取得し,フロントエンドのEPGStationはrecfsusb2nを呼び出すことはないようだ。
==== OS のインストール ====
[[it:rpi:raspbian|Raspbianのインストール]] を参照して,インストールする
その後,
sudo apt update
sudo apt upgrade
を実行しておく
==== recfsusb2n のインストール ====
http://ksmksks.hateblo.jp/entry/2015/09/20/205550
の方法を実施した
sudo apt-get install git libboost-all-dev gcc make
git clone https://github.com/sh0/recfsusb2n
mkdir patch
cd patch/
unzip recfsusb2n_http_patch2.zip
mv * ../recfsusb2n/src/
cd ../recfsusb2n/src/
vi Makefile
* 11行目:"CXXFLAGS =“の”-march=native“を削除
* 13行目:"CFLAGS =“の”-march=native“を削除
* 15行目:"#LIBS“の”#“を消してコメントアウトを外し,boost_thread-mt」の「-mt」を消す
* 16行目:頭に"#“を付けて”#LIBS"としてコメントアウト.
make
cp recfsusb2n /usr/local/bin/
=== 動作確認の例 ===
UHF27chを40秒間、test.tsにB25復号しながら記録
recfsusb2n -bv 27 40 test.ts
==== mirakurunのインストール ====
https://qiita.com/tatsuya_info/items/3583182ac104a4958eac
にある内容に従って,以下をやった
sudo curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
sudo apt-get install -y nodejs
sudo npm install pm2 -g
sudo npm install mirakurun -g --unsafe-perm --production
sudo mirakurun config tuners
すべて消して,以下を書き込む
- name: KTV-FSPCIE
types:
- GR
command: /usr/local/bin/recfsusb2n --b25 - -
isDisabled: false
- name: KTV-FSUSB2N
types:
- GR
command: /usr/local/bin/recfsusb2n --b25 - -
isDisabled: false
(この記述で,二台のチューナーを同時に使える)
さらに
sudo mirakurun config channels
で,以下を記述する
- name: NHKEテレ
type: GR
channel: '22'
- name: TVQ九州放送
type: GR
channel: '26'
- name: NHK総合
type: GR
channel: '27'
- name: RKB毎日放送
type: GR
channel: '30'
- name: KBCテレビ
type: GR
channel: '31'
- name: FBS福岡放送
type: GR
channel: '32'
- name: テレビ西日本
type: GR
channel: '34'
上記の処理で /usr/local/etc/mirakurun/* に設定ファイルが書き込まれる。
sudo mirakurun restart
で起動する。起動しない場合には /usr/local/var/log/ 以下の mirakurun.* にログがでているので確認する。
curl -X PUT "http://localhost:40772/api/config/channels/scan"
でチャンネルスキャンする。
ここで,/usr/local/etc/mirakurun/channels.yml に結果が書き込まれる
スキャンの結果を確認するには,
sudo mirakurun restart
sudo npm install rivarun -g
sudo rivarun --list | sed 's/},/},\n/g'
で確認できる
==== EPGStation ===
sudo gpasswd -a $USER video
git clone https://github.com/l3tnun/EPGStation.git
cd EPGStation
npm install --unsafe-perm sqlite3
npm install diskusage
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
vi ~/EPGStation/config/config.json
"ffmpeg": "/usr/bin/ffmpeg",
"ffprobe": "/usr/bin/ffprobe",
"recorded": "/path/to/",
"recordedTmp": "/path/to/",
pm2 startup
pm2 start dist/server/index.js --name "epgstation"
pm2 save
以上で設定が済んだら,
http://192.168.1.140:8888/
でアクセスして動作するか確認する。
==== エラー ===
/usr/local/var/log/mirakurun.stderr.log に以下のエラーが出ていた
2020-03-10T12:49:11.779+09:00 warn: TSFilter is overflowing the buffer...
それで,
npm update -g core-js set-value npm
を実行した
さらに、この問題は、バッファのオーバーフローなので、
/usr/local/etc/mirakurun/server.yml を編集して
以下を追加して、バッファサイズを512Mにした
highWaterMark: 536870912
さらに、
/usr/lib/node_modules/mirakurun/processes.json
を編集して、プロセスサイズの最大値を2048Mに変えてみた。
"node_args" : "--max_old_space_size=2048",
==== エラー ===
再起動時にスタートしない問題
pm2 startup
を実行すると,
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi
と出たので,
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi
を実行した
==== アップデート ===
mirakurunのアップデート
# npm install mirakurun@latest -g --production
EPGStationのアップデート
# su pi
$ cd EPGStation
$ git pull