初めに
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環境でやりますが、説明は書き言葉!
-
左上のラズパイアイコンから、アクセサリ、SD Card Copierを開く
-
FromにSDカードを選択して, ToにUSBを選択してStart!
-
終わったら、シャットダウン後
-
microSD引っこ抜いて、USBメモリは挿したまま起動
-
多分ちゃんと動いてるでしょう(おい)
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で!
## テンプレート
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
- 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
# 書き換え
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
// 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
# 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
# 追加
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
/usr/local/var/log/mirakurun.stdout.log
/usr/local/var/log/mirakurun.stderr.log
/{
daily
compress
rotate 7
missingok
notifempty
}
メールで送信とかもしてもらえるらしいけど,
Mirakurunならいらないよね.