Site Tools


it:rpi:rec_server

録画サーバ

hardware

  • Raspberry Pi 4
  • KTV-FSUSB2
  • KTV-FSPCIE

software

使用ソフト機能
フロントエンドEPGStationGUI,WEBUI,予約管理
バックエンドmirakurunAPIサーバ(RESTインターフェース),チューナー,チャンネル管理
録画プログラムrecfsusb2nチューナ機器からデータを読み出すコマンド

フロントエンドには,Chinachuというのもあるが,EPGStationの方が開発が活発のようなのでEPGstationを選んだ

mirakurunはrecfsusb2nを呼び出して,テレビのデータを取り出す。EPGStationはmirakurunのAPIを用いて,データを取得する。テレビのストリーミングのデータすら,APIで取得し,フロントエンドのEPGStationはrecfsusb2nを呼び出すことはないようだ。

OS のインストール

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 <channel> - -
  isDisabled: false


- name: KTV-FSUSB2N
  types:
    - GR
  command: /usr/local/bin/recfsusb2n --b25 <channel> - -
  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
it/rpi/rec_server.txt · Last modified: by fu