6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

EPGStation v2を使ったラズパイ録画サーバー

Last updated at Posted at 2021-01-15

初めに

EPGStationのversion2が出たようです。
基本的には変わらないけど、jsonからymlになったみたい...

UIの変更とかがあったようで試してみたかったので手順を書いとこうと思います。

ついでにnginx使って80ポートでアクセスできるようにもします

使用するもの

  • RaspberryPi4 8GB
  • microSD 16GB
  • USBメモリ 32GB SDカードからUSBに替えたかった

録画用

  • PLEX PX-S1UD V2.0(TVチューナー Amazon
  • Gemalto IDBridge CT30(カードリーダー Amazon
  • 録画用HDD 1TB
  • B-CASカード(Amazonで中古でゴニョゴニョ)

事前準備

microSDからUSBに変更

microSDにはRaspberryPiOSが入ってるものとします
初期設定はまぁ、色々調べれば出る

GUI環境でやりますが、説明は書き言葉!

  1. 左上のラズパイアイコンから、アクセサリ、SD Card Copierを開く

  2. FromにSDカードを選択して, ToにUSBを選択してStart!

  3. 終わったら、シャットダウン後

  4. microSD引っこ抜いて、USBメモリは挿したまま起動

  5. 多分ちゃんと動いてるでしょう(おい)

USBでなくともHDDにしたいならUSBの代わりにやればOK!

録画用HDDをマウントさせる

事前にフォーマットはexFATにしているものとします

とりあえずexFATを認識させる

sudo apt-get update
sudo apt-get upgrade

sudo apt-get install exfat-fuse exfat-utils

HDDをマウントさせる

HDDのUUID確認

sudo blkid

# /dev/sda1: LABEL="HDDの名前" UUID="xxxx-xxxx" TYPE="exfat" PARTUUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

UUIDをメモっておきます xxxx-xxxx〆

起動時に自動でマウントするように設定

sudo nano /etc/fstab

vimが使える人はそっちの方が早い(らしいね...)
vimってナンダって人はnanoで!

/etc/fstab
## テンプレート
UUID=“”	マウント場所(例:/mnt/hdd)	exfat-fuse	defaults	0	0

## 記入例
UUID="xxxx-xxxx"	/mnt/HDD	exfat-fuse	defaults,users, nofail	0	0

細かい説明はそのほかの設定はここ見てfstab - ArchWiki

注意
どうやらdefaultsの設定で自動的につくautoオプションは
該当のディスク(今回はHDD)がない場合emergencyモードで起動するらしい...
再起動時にHDDが刺さってないと面倒になるので、怖い人は設定しない方がいいかも
もしくは手動でマウントする...
仮にemergencyモードになってもrootユーザーでログインして、
/etc/fstabのHDDの行をコメントアウトしてから再起動させれば、
ちゃんと起動するので一回経験してみてもいいかもね←
ただしemergencyモードになるとSSHやVNCは使えないのでモニターの目の前でUSBキーボード挿してやらないといけないので要注意

2021/01/24 nofailオプション付けるだけで解決しました

書き込み終わったら

sudo reboot

再起動後

sudo df -h

# /dev/sdb2        932G  5.2G  927G    1% /mnt/HDD

マウント位置がマウント場所の通りになってれば成功

録画サーバー構築

カードリーダー

色々インストール

sudo apt-get install pcscd libpcsclite-dev libccid pcsc-tools

認識されてるか確認

pcsc_scan | grep B-CAS
#	Japanese Chijou Digital B-CAS Card (pay TV)
# ^C

チューナー PX-S1UD

認識させるためにドライバをインストール

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
# firmwareに移動させる
sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware/

チューナーが認識されてるか確認

usb-devices | grep PX-S1UD
# S:  Product=PX-S1UD Digital TV Tuner

先に色々インストール

# dvbtoolによりDVB APIが使える mirakurunのコマンドに使う
sudo apt-get install dvb-tools

# ffmpeg  EPGStationに使用
sudo apt-get install ffmpeg

# Node.js 14系 EPGStationに使用
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install nodejs

# pm2 EPGStationやmirakurunで使用
sudo npm install pm2 -g
# sudo npm i pm2 -g と省略もできる
# -g は --global と同様 どこでも動くよ~みたいな感じ

mirakurun

インストール

sudo npm install mirakurun -g --unsafe-perm --production
# スクランブル解除用のコマンド? (よくわからん)
# デコーダーらしい
sudo npm install arib-b25-stream-test -g --unsafe-perm

Github.com mirakurunでこういうインストール方法だったのでコピペ

チャンネルデータのインストール

cd /usr/local
sudo mkdir origin
cd origin
sudo git clone https://github.com/Chinachu/dvbconf-for-isdb.git
cd

チューナーのセットアップ

sudo EDITOR=nano mirakurun config tuners
tuners.yml
- name: PX-S1UD-1
  types:
    - GR
  command: dvbv5-zap -a 0 -c /usr/local/origin/dvbconf-for-isdb/conf/dvbv5_channels_isdbs.conf -r -P <channel>
  dvbDevicePath: /dev/dvb/adapter0/dvr0
  decoder: arib-b25-stream-test
  isDisabled: false

dvbDevicePath は cd /dev/dvb/でadapter0,1とかがあるのでみる

チューナーが複数ある場合はそれぞれで番号を変えること

/dev/dvbがなかったらチューナー挿し直してみて

sudo EDITOR=nano mirakurun config **

**の部分は tuners channels server でそれぞれ編集可能

調べたら色々出てくるヨー

EDITOR=nano を使わない場合vim編集になるよ〜(私には難しい操作)

チャンネルスキャン

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

チャンネルがスキャンされます
返答はこんな感じ

#  見つからない場合
# channel: "13" ...
# -> no signal. [Error: stream has closed before get network] 
# 見つかる場合
# channel: "22" ...
# -> 3 services found.
# -> {"name":"NHKEテレ","type":"GR","channel":"22","isDisabled":false}

他のErrorが出るなら設定見直した方がいいかも

チャンネルスキャンできたらMirakurunを再起動

sudo mirakurun restart

ちなみに
http://ラズパイのIP:40772
にアクセスするとMirakurunのUIで操作もできる
IPがわからないならhostname -Iで見れるよ

EPGStation

インストール

git clone https://github.com/l3tnun/EPGStation.git
cd EPGStation
sudo npm run all-install
sudo npm run build

設定ファイルのコピー

ver2 からjsonからymlに変わった

cp config/config.sample.yml config/config.yml
cp config/operatorLogConfig.sample.yml config/operatorLogConfig.yml
cp config/epgUpdaterLogConfig.sample.yml config/epgUpdaterLogConfig.yml
cp config/serviceLogConfig.sample.yml config/serviceLogConfig.yml

sqliteを使用する場合に正規表現を使用する場合はこれをする必要がある
github

リアルタイム視聴できるようにconfig/config.ymlを編集

nano config/config.yml
config/config.yml
# 書き換え
sqlite:
  extensions:
    - '/home/pi/sqlite-amalgamation-3340000/regexp.so'
    # 正規表現を使うなら上のリンクからやってそのパスを書いて下さい
  regexp: true
  # 正規表現を使わないならfalse
recorded:
    - name: recorded
      path: '/mnt/HDD'
ffmpeg: /usr/bin/ffmpeg
# pathがわからないなら which ffmpeg
ffprobe: /usr/bin/ffprobe
# pathがわからないなら which ffprobe
# 終わり

stream:
  live:
    ts:
      mp4:
      # 追加
        - name: h264_omx
          cmd:
              '%FFMPEG% -re -i pipe:0 -threads 0 -c:a copy -bsf:a aac_adtstoasc -c:v h264_omx -vb 3000k -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4 pipe:1'
      # 終わり

リアルタイム視聴できるようにconfig/enc.jsを編集

nano config/enc.js
config/enc.js
// 14行目 codecをh264_omxに変更
// const codec = 'libx264';
const codec = 'h264_omx';
// 39行目くらい その他設定の直前にビットレートの指定を追加
Array.prototype.push.apply(args, ['-b:v', '3000k']);
ちょっと便利技

nanoで行数を表示するには

sudo nano /etc/nanorc
/etc/nanorc
# 65行目 のコメントアウトを解除 ^Wでlinenumbersを検索した方が楽
# set linenumbers
↓
set linenumbers

自動で起動する設定

sudo npm install pm2 -g
sudo pm2 startup <OS名>
pm2 start dist/index.js --name "epgstation"
pm2 save

OS名は
RaspberryPiOSはDebianだけどないのでsudo pm2 startup ubuntu

完成

http://ラズパイのIP:8888
にアクセスすると見れると思います

でもなんか気持ち悪い...(おい)
80ポートはsudo権限がいるような記憶なので
nginxを使ったリバースプロキシを使います

nginx

インストール

sudo apt-get install nginx

起動とかのコマンド

sudo /etc/init.d/nginx start
sudo /etc/init.d/nginx stop
sudo /etc/init.d/nginx restart

試しに起動してみよ~
sudo /etc/init.d/nginx start

リバースプロキシ設定

sudo nano /etc/nginx/sites-available/default
/etc/nginx/sites-available/default
# 追加
location / {
        proxy_pass http://127.0.0.1:8888;
        # 同じラズパイ内なので127.0.0.1でOK!
}
# 元からある方はコメントアウト こちらを編集してもいいです
# location / {
#       # First attempt to serve request as file, then
#       # as directory, then fall back to displaying a 404.
#       try_files $uri $uri/ =404;
# }

再起動

sudo /etc/init.d/nginx restart

http://ラズパイのIP
でアクセスできるようになってます(多分!)

ついでにログ圧縮

ログが膨大になるらしいので圧縮

毎日ログを圧縮して1週間分保存する設定

sudo pm2 install pm2-logrotate
sudo nano /etc/logrotate.d/mirakurun
/etc/logrotate.d/mirakurun
/usr/local/var/log/mirakurun.stdout.log
/usr/local/var/log/mirakurun.stderr.log
/{
  daily
  compress
  rotate 7
  missingok
  notifempty
}

メールで送信とかもしてもらえるらしいけど,

Mirakurunならいらないよね.

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?