【2023年10月】Ubuntu + Mirakurun + EDCB-Wine + KonomiTV (px4_drv + recisdb + ISDBScanner) でパパッと Linux 録画鯖構築の手引き

またまたお久しぶりです。録画関連の記事書いたのいつ以来だろう…。

訳あって、最近 Linux 環境の録画サーバー構築を手軽にできるような諸々の調整をいろいろ進めています。ただまとまった情報を書いていないこともあってかさほど使われていないようなので、ざっくりコマンドメモ程度にまとめておきます。

文章を懇切丁寧に書くのがだるかったのでビギナー向けになっているかは微妙ですが(さすがに Linux で録画鯖組もうなんて輩に PC 初心者レベルの人はいないやろ…)、大半のパッケージを Debian パッケージ化したりやチャンネルスキャンと設定ファイルの生成を完全自動化したことで、今まで一般的とされていた手順よりも大幅に簡略化されています。
インターネット上に数ある Linux での DTV 環境構築記事の中でも、今のところ一番無難で手軽でクリーンでミスらない手順になっているのではないでしょうか(私調べ)。

Mirakurun を除き今回導入するソフトはすべて私が何らかの形で開発に関与しているため、やむを得ず手前味噌や自画自賛と取れる内容が多分に含まれております。あらかじめご了承ください…🥺

Sponsored Link

前提条件

  • Ubuntu 20.04 LTS / Ubuntu 22.04 LTS
    • 今のところ Ubuntu 20.04 LTS でしか検証していないけど、パッケージ自体は後方互換がある (20.04 向けの Debian パッケージは 22.04 でも概ね動く) ので大丈夫のはず…?
    • Arch Linux とかいう録画サーバー用途では極めて不安定なドM向け OS と RedHat 系は知らんがな…
      • Debian は… glibc 的には Debian 11 以降なら Ubuntu 20.04 LTS と同じ glibc 2.31 だから行けんじゃねえのかな、知らんけど
      • GitHub Actions の GitHub-Hosted Runner にあるのが Ubuntu 20.04 LTS が下限なのもある (バージョン古い方の OS で Debian パッケージビルドすればバージョン新しい方でも大体使えるので)
    • 親切なので arm64 対応 (ラズパイ4はスペック足らんので Rockchip RK3588 のやつとか) も考慮して諸々パッケージとか作ってます
      • エーッ今 armv7 (32bit) の SBC 使ってる?さすがに Windows 11 ですら 64bit に完全統一された大 64bit 時代のご時世諸々サポート状況が厳しいので窓から投げ捨ててもろて…… (ラズパイ3以降の SoC は確か OS さえ 64bit にすれば 64bit になるので 32bit が動かないから動かないは甘え、OS を入れ直そう)
      • ただし今回使ってる EDCB-Wine は大元が x86_64 向けなので arm64 だと動かなさそう (arm64 対応意味なくね…?)
  • PLEX / e-better から発売されている Digibest 製チューナー or PX-S1UD / MyGica VT20 を持っている
    • 正確には PLEX / e-better チューナーのうち tsukumijima/px4_drv でサポートされている機種のみ (DTV02(A)-1T-U は SDR (Software Defined Radio) チューナーなので対応不可)
    • PX-S1UD / MyGica VT20 は Siano Mobile Silicon 製チューナー IC を採用していて、このドライバは Linux カーネルに DVB 版ドライバとして組み込まれている
      • 以前の recisdb は V4L-DVB 版ドライバに対応していなかったが、v1.2.1 以降で対応したため問題ない
  • B-CAS + スマートカードリーダー or B-CAS エミュレーターを事前に準備している
    • スマートカードリーダーを使う場合は pcscd / pcsc-tools / libpcsclite1 あたりのインストールをお忘れなく (pcsc_scan で B-CAS やカードリーダーの認識状態を確認できる)
    • B-CAS エミュレーターは最近だと libcobaltcas とか
    • ちなみに物理 B-CAS カードは有象無象の謎の中古が Amazon のマケプレ で売られてる(どんなものが送られて来るかは知らない、以前は大量のマケプレ業者が群がってたページがあったんだけどなんかいつの間にか消えてた…) 一応 2,000 円以上出して新品を「再発行」したりごみステーションに捨てられてるボロレコーダーから漁る手がなくもないが…
  • 録画用 HDD が /mnt/ 以下のパスにマウントされている
    • さすがにそれくらいはやってるよ…ね?
  • Mirakurun をローカルで動かすための Node.js 18.x がインストールされている
    • Docker 版 Mirakurun はデフォルトでドライバやスマートカードリーダーのアクセス周りが面倒 (特に DVB 系ドライバ以外の recpt1 や recisdb が入っていない) で有志の Dockerfile を漁るか自分で作るか setup.sh を書くかとかの羽目になる上トラブルシューティングも面倒になるので、個人的にはこだわりがなければあまりおすすめしません
      • そこそこ長い間 PM2 でローカルに動かしてますが特に問題ないです
    • 正直ローカルの Node.js を 16.x から上げられてないのでうーんって感じなんだけど、とりあえず この辺 (NodeSource) を参照してインストールするのが手軽で良さそう
    • NodeSource は手軽なインストーラーがいつの間にか非推奨になってて謎だけど、こだわりがなければ curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - の方がいいかも知れぬ
  • Docker と Docker Compose V2 がインストールされている
    • EDCB-Wine を動かすために使います
      • なんでも Docker にするとかえって面倒じゃね?主義なんだけど、これに関しては性質上さすがに環境を Docker コンテナに閉じ込めないとつらい感じだったのでこうなってる
    • インストールは各自でやってください(Docker Compose V1 (docker-compose でハイフンで繋がるやつ) はもうサポート終わったので代わりに V2 にしてくれ)

px4_drv のインストール

チューナーを認識させるにはまずドライバから。

GitHub - tsukumijima/px4_drv: Unofficial Linux / Windows (WinUSB) driver for PLEX PX4/PX5/PX-MLT and e-better series ISDB-T/S receivers (not V4L-DVB)
Unofficial Linux / Windows (WinUSB) driver for PLEX PX4/PX5/PX-MLT and e-better series ISDB-T/S receivers (not V4L-DVB) ...

本家の px4_drv は大変残念ながら作者の nns779 大先生が2021年夏を最後に失踪なさっているので、代わりに私のフォーク版 px4_drv を使っていきます。
DKMS + Debian パッケージ対応なので、リリースページで公開している Debian パッケージをインストールしておくだけでカーネルが更新された際に自動的にドライバが再ビルドされ、「いつの間にかドライバが消えてた…」なんて事態を防ぎます。DKMS は偉大。

特に本家版 px4_drv は Linux 6.4 系・6.8 系での API 変更に対応できていないため、Linux 6.4 以降では DKMS での再ビルドに失敗してしまいます。

PX-S1UD / MyGica VT20 しか持ってない人はこの手順を飛ばしてしまっても構いません。なお、これらの機種 (Siano SMS2270 採用チューナー) のドライバは Linux カーネルに付属しています。

…ただし、Ubuntu にはデフォルトで Siano SMS2270 のファームウェアが同梱されていません (linux-firmware から何故か意図的に除外されている) 。
PX-S1UD の Windows 版ドライバから抽出する方法もありますが、私は Debian に存在する firmware-siano パッケージの .deb ファイル をダウンロード・インストールすることを推奨しています。

wget http://ftp.jp.debian.org/debian/pool/non-free-firmware/f/firmware-nonfree/firmware-siano_20230210-5_all.deb
sudo apt install -y ./firmware-siano_20230210-5_all.deb
rm ./firmware-siano_20230210-5_all.deb

px4_drv に必要なチューナーファームウェアは Debian パッケージの中に同梱済みなので、いちいち抽出する必要はありません。

詳しい情報は tsukumijima/px4_drv の Readme を読んでほしいのでここでは省略します。本家の Readme にさらに加筆し、丁寧めに書いてあるつもりです。
なお、tsukumijima/px4_drv では PX-M1UR/PX-S1UR への追加対応も行われています。

# Debian パッケージをインストール (DKMS のソースパッケージなので amd64 と arm64 共通)
wget https://github.com/tsukumijima/px4_drv/releases/download/v0.4.4/px4-drv-dkms_0.4.4_all.deb
sudo apt install -y ./px4-drv-dkms_0.4.4_all.deb
rm ./px4-drv-dkms_0.4.4_all.deb

# ドライバをロード
# インストールしただけでは自動ロードされないので明示的にロードする必要がある
sudo modprobe px4_drv

# px4_drv がロードされているかを確認 (ちゃんとログ出てきたら OK)
lsmod | grep -e ^px4_drv
dmesg | grep px4
ls -la /dev | grep -e px -e isdb

記事が更新されてないだけで新しいバージョンがリリースされている場合は、適宜新しいバージョンの方を wget してください(バージョンを固定してる意図は今のところないです)。

ここまで来れば多分接続しといたチューナーが認識されていることでしょう(たぶん)。
なんか認識されてなさげな場合は USB とかの接触を確認したり抜き差しするなどしてください。

recisdb のインストール

通常 Linux 録画界隈では recpt1 とか recdvb とか dvbv5-zap とか、あと B25 デコードでは arib-b25-stream-test (2016年から放置されている本家 / tsukumijima/libaribb25 ベースの大幅改良版) などのコマンドラインツールが多用されていますが、いずれもメンテされてなかったりお世辞にもコードがアレだったりとレガシーで散逸しており、取り回しが悪いな〜と思っていました。

GitHub - kazuki0824/recisdb-rs: recisdb-rs and b25-sys are more convenient Rust wrapper for libaribb25. recisdb can read both Unix character device-based and BonDriver-based TV sources.
recisdb-rs and b25-sys are more convenient Rust wrapper for libaribb25. recisdb can read both Unix character device-base...

そんなところに現れたのが Rust で書かれた recisdb で、tsukumijima/libaribb25 のデコード機能を統合し、いろいろモダンによしなにチューナーコマンドをやってくれます。
さらに px4_drv をはじめとした chardev 版ドライバと、Linux カーネル内蔵の smsusb (PX-S1UD / MyGica VT20 用) のような V4L-DVB 版ドライバ (DVB デバイス) の両方に対応している点も特徴です。オールインワンなので取り回しが良い!!

tune と checksignal と decode がまとまっていたり、arib-b25-stream-test と異なりデコードに失敗した場合もフォールバックとして未デコードのストリームを流してくれる、ログが丁寧などいろいろメリットがあります(私もレガシーで壊れそうな C 言語コードの山にウーンと思っていたところだったので、少しだけ開発に参加しています)。

recisdb を入れる場合は recisdb 自体が B25 デコードもやってくれるので、arib-b25-stream-test や recpt1 は不要になります。
まあ recpt1 自体に不具合があるわけじゃないので recpt1 でも良いんだけど、やっぱりモダンで整って整理されているのが良いじゃん? (recpt1 –b25 が非推奨?とされていたのはよくわからんけど recisdb tune で既定で自動 B25 デコードされるやつは全然問題なさげに動いてるかんじ)

# x86_64 環境
wget https://github.com/kazuki0824/recisdb-rs/releases/download/1.2.2-rc.2/recisdb_1.2.1-1_amd64.deb
sudo apt install ./recisdb_1.2.1-1_amd64.deb
rm ./recisdb_1.2.1-1_amd64.deb

# arm64 環境
wget https://github.com/kazuki0824/recisdb-rs/releases/download/1.2.2-rc.2/recisdb_1.2.1-1_arm64.deb
sudo apt install ./recisdb_1.2.1-1_arm64.deb
rm ./recisdb_1.2.1-1_arm64.deb

recisdb のリリースページに Debian パッケージがあるのでこれを使ってインストールするだけ。
わざわざインストールするときに Cargo とか Rust の開発環境インストールしたくないっしょ?それはそう。

(2回目) 記事が更新されてないだけで新しいバージョンがリリースされている場合は、適宜新しいバージョンの方を wget してください(バージョンを固定してる意図は今のところないです)。

recisdb help でこうなっていれば OK 。

ISDBScanner のインストールと実行

GitHub - tsukumijima/ISDBScanner: 受信可能な日本のテレビチャンネル (ISDB-T/ISDB-S) を全自動でスキャンし、スキャン結果を様々な形式で出力するツール
受信可能な日本のテレビチャンネル (ISDB-T/ISDB-S) を全自動でスキャンし、スキャン結果を様々な形式で出力するツール - tsukumijima/ISDBScanner

さてここで登場するのが、最近私が開発した ISDBScanner。
px4_drv で対応しているチューナーデバイスを自動で認識し、完全自動でチャンネルスキャンを行って EDCB-Wine / Mirakurun / mirakc 向けのチャンネル設定ファイル / チューナー設定ファイルを全自動で生成できる便利ツールです(自画自賛)。

インストール方法とか仕様の詳細とかはガッツリ Readme に書いてあるのでちゃんと読んでほしいんですけど、一応下にも書いておきます。

# x86_64 環境
sudo wget https://github.com/tsukumijima/ISDBScanner/releases/download/v1.1.3/isdb-scanner -O /usr/local/bin/isdb-scanner
sudo chmod +x /usr/local/bin/isdb-scanner

# arm64 環境
sudo wget https://github.com/tsukumijima/ISDBScanner/releases/download/v1.1.3/isdb-scanner-arm -O /usr/local/bin/isdb-scanner
sudo chmod +x /usr/local/bin/isdb-scanner

PyInstaller でシングルバイナリに固めてあるので、wget して /usr/local/bin なり適当に配置するだけです(別に単発でしか使わないならカレントディレクトリにおいてスキャン後に削除してもいい)。

(3回目) 記事が更新されてないだけで新しいバージョンがリリースされている場合は、適宜新しいバージョンの方を wget してください(バージョンを固定してる意図は今のところないです)。

isdb-scanner --help で使い方が表示されます。

isdb-scanner --list-tuners と実行すると、PC に接続されている、利用可能なチューナーのリストが表示されます。横に (Busy) と出てるのは使用中のチューナーです。
PC に接続したはずのチューナーが認識されていない場合は、チューナードライバのインストール・ロード状態や、チューナーとの物理的な接続状況を確認してみてください。

# BS の有料放送と CS チャンネルをスキャン結果に含めてスキャンする
isdb-scanner ./scanned/

# BS の有料放送と CS チャンネルをスキャン結果から除外してスキャンする
# 有料放送を契約していないほとんどの人におすすめ、有料放送が排除されることで諸々のチャンネルリストとか EPG 取得とかが軽くなってメリットが多い
isdb-scanner --exclude-pay-tv ./scanned/

こんな感じでスキャンを実行します。スキャンにはたぶん5分くらいかかるので、その間放置してください。

スキャンの進捗はめっちゃグラフィカルに表示されます(謎に凝ってしまった、個人的に気に入ってる)。

スキャンに利用されるチューナーは自動検出され、ログ出力された一番上のチューナーが自動で使われます。チューナー受信には recisdb が利用されます。
そのチューナーがなんか他のプロセスで使われてるとか死んでるとかで使えなかった場合は、代わりに他のチューナーが使われます(性質上、すでに Mirakurun / mirakc を導入している場合は競合を避けるために止めてから実行した方が無難です)。

スキャンが完了すると、上記の例のとおり実行した場合は ./scanned/ 以下にこんな感じでファイルが出力されます。
生成されたこれらの設定ファイルはあとで使います。

Mirakurun のインストール

GitHub - Chinachu/Mirakurun: A Modern DVR Tuner Server for Japanese TV.
A Modern DVR Tuner Server for Japanese TV. Contribute to Chinachu/Mirakurun development by creating an account on GitHub...

言わずと知れたチューナー共有サーバーです。
パフォーマンス追求とか諸々の思想とかがあれば別に mirakc でもいいとは思うんですが、GUI ついててチューナー利用状況が把握しやすいので、なんだかんだでこだわりがなければこちらがいいような気はします。
私もなんだかんだで長いことお世話になっています(DTV 界隈はさまざまな過去の偉人のボランティア OSS 活動の積み重ねで今があるわけですから、例外なくプロダクトの存在に感謝せねばなりません)。

前述のとおり個人的には Docker で Mirakurun をインストールするのは DTV 関連技術に長けている人間でもない限り結構面倒だと思うので、PM2 でインストールする方向で行きます(そもそも Docker is 何って人もいるでしょうからね、私も数年前まではそうでした)。

Mirakurun/doc/Platforms.md at master · Chinachu/Mirakurun
A Modern DVR Tuner Server for Japanese TV. Contribute to Chinachu/Mirakurun development by creating an account on GitHub...

ちゃんとこちらの公式ドキュメントに手順が載ってるので基本そこを見てほしいんですが、一応ここにもコマンドを載せておきます(この辺実際に実行検証したわけじゃないのでもしかすると間違えてるかも)。

# Mirakurun 関連は PM2 もそうだが root 権限で実行するのが大変重要、ユーザー権限だと諸々の問題が発生する
# たぶんこれ一発で行けるはず
sudo npm install -g pm2
sudo npm install -g --unsafe-perm --foreground-scripts --production mirakurun

# バージョン確認
# Mirakurun は確かセキュリティ上の理由 (?????) でホスト名でのアクセスを許可していないので、
# API には常に IP 指定でアクセスする必要がある
curl http://127.0.0.1:40772/api/version

たぶんこれでインストール自体はできるはずです。設定何もやってないのでもぬけの殻ですが。

PM2 は Node.js 製のサービスプロセスマネージャーです。Python で言う Supervisord とかそういう系の、Systemd サービスで動かすには面倒だけど…みたいなのをやってくれる優れもの。

# すでに Mirakurun サーバーは起動状態なので、一旦停止させておく
sudo mirakurun stop

# スキャンで生成された設定ファイルを Mirakurun の設定フォルダが配置されている
# /usr/local/etc/mirakurun 以下にコピー
sudo cp -a scanned/Mirakurun/channels.yml /usr/local/etc/mirakurun/channels.yml
sudo cp -a scanned/Mirakurun/tuners.yml /usr/local/etc/mirakurun/tuners.yml
sudo chown -R root /usr/local/etc/mirakurun/

# お好みで server.yml を編集
# GUI から変更することもできる
sudo nano /usr/local/etc/mirakurun/server.yml

# Mirakurun サーバーを再起動
sudo mirakurun start

さて、ここで以前 ISDBScanner でのスキャンで生成された設定ファイルをコピーします。
なお server.yml に関しては ISDBScanner では生成されないので、お好みで調整してください。

一応 Mirakurun にもチャンネルスキャン API はあるんですが、recpt1 のチャンネル指定フォーマットにしか対応してない、遅いなどいくつか問題があるので ISDBScanner がおすすめです (ダイマ)。
なお、mirakc にはチャンネルスキャン API 自体がありません。

ちなみに mirakurun コマンドはシェルスクリプトで、startstop のコマンドは sudo pm2 start mirakurun-server の薄いラッパーになっています。

スキャン結果を反映したところで http://(Ubuntu サーバーの IP):40772/ にアクセスすると、リアルタイムでチューナーの利用状況や認識されているチャンネルが確認できるコントロールパネルが開くはずです!ちゃんとチューナーが認識できてればですが…。

EDCB-Wine のインストールと設定

GitHub - tsukumijima/EDCB-Wine: EDCB を Wine を使って Linux 上で動作させるための Docker Compose 構成
EDCB を Wine を使って Linux 上で動作させるための Docker Compose 構成 - tsukumijima/EDCB-Wine

通常 Mirakurun を入れたら EPGStation を入れるのがセオリーですが、今回は EDCB-Wine という『本来 Windows 向けの予約録画ソフトである EDCB を、Wine を使って Linux 上で動作させるための Docker Compose 構成一式』を使います(私の自作)。

EPGStation にあるようなライブ視聴機能・録画視聴機能こそない (正確には EDCB Material WebUI にはあるが、Lua の互換性の問題か何かで動かない…) ものの、予約録画管理は EDCB Material WebUI から EPGStation 以上の使い勝手でバッチリ使えます!
EDCB-Wine の環境設定 (EpgDataCap_Bon や EpgTimerSrv の設定) も、noVNC 経由でブラウザから行えます(リモート操作周りは全て設定済みなので、改めて調整する必要はありません)。

4ヶ月以上サルベージ&バックアップ用深夜アニメ (地上波/BS) 全録サーバーとして運用していますが、Wine が原因での録画失敗は一度も起きておらず、十分安定していると言えるのではないでしょうか。むしろチューナードライバを誤って落としてたり Mirakurun のチャンネル設定ミスったりなど私のヒューマンエラーによる録画失敗の方が多かった…。

ライブ視聴に関しては、今後の手順で導入する KonomiTV を導入することで、EDCB Material WebUI に搭載されているものよりもはるかにリッチな視聴体験を楽しめます(自画自賛)。
…エッ録画視聴機能ないの? 開発遅れてすみません今頑張って実装してます!!!!!!!!!!もうちょっとだけ待っておくれーー!!!!!!

EDCB-Wine の開発動機自体、今後 KonomiTV で予約録画フロントエンド機能を追加する際の予約録画バックエンドとして使えるようにするためだったりします (後述の通り EPGStation はメンテナンスモードな上 EDCB とは諸々のデータ構造が大きく異なるため、両対応は現実的でない) 。

EDCB は主に EpgDataCap_Bon.exe (チューナー制御ソフト) / EpgTimer.exe (予約録画フロントエンド) / EpgTimerSrv.exe (予約録画バックエンド) の3つの実行ファイルから構成される、クライアント/サーバアーキテクチャを採用したソフトウェアです。
このため、サーバー側は EpgDataCap_Bon.exe と EpgTimerSrv.exe (と依存 DLL) さえ動かせれば、EDCB の予約録画サーバーとして動作します。

EpgTimer.exe 自体も EpgTimerNW.exe にリネームすることでネットワーク経由で EpgTimerSrv の TCP API サーバーにリモート接続できるため、Web UI だけでなく EDCB-Wine で稼働中の EpgTimerSrv に Windows PC に配置した EpgTimerNW からリモート接続して、使い慣れた EpgTimer のネイティブ UI から細かく予約録画操作を行うことも可能です。

EPGStation は現在メンテナンスモード で、今後の機能追加や改善は見込めない状況 です。
特に EPGStation は経験上、予約番組が野球中継で延長した際などの追従や、番組延長で後ろ倒しになった番組の録画、イベントリレーなどのイレギュラーな番組編成が行われた際に、かなり高い確率で録画に失敗してしまいます(甲子園とスーパースターの件が記憶に新しい)。
さらに録画マージン設定自体も Mirakurun の設定に依存しているため、設定次第では先頭や末尾が欠けることもあります。

一方 EDCB は元々 Windows 向けに書かれたレガシーな C++ 製ソフトウェアですが、15年以上 (?) の歴史と実績に裏打ちされた確かな録画安定性と、細かく条件を指定して録画予約を設定できる驚異的な多機能性を誇ります。
キーワード指定を間違えたりや放送局側の EPG 送出で放送事故が起きない限り、まず録画失敗(一部が欠ける、全く録画できない)が発生しません。

私が EDCB-Wine を開発したのも、市販のレコーダーとは比べ物にならないほど高い録画安定性を誇る EDCB を、Windows Update での自動再起動などのアクシデントのリスクが少なく安定した Linux 環境で動かしたかったからに他なりません。
個人的には EPGStation と違い、30分番組で数百 MB ほど容量を食う上まず見ることのないデータ放送を録画時に除外できる機能に助けられています(4TB HDD で2ヶ月分ほどサルベージ & バックアップ用にアニメを全録しているため)。

ここまで arm64 対応な記事来たのに本当に申し訳ないんですが、EDCB-Wine はデフォルトでは arm64 アーキテクチャに対応していません。
まず Wine 自体が Windows の x86 / x64 アーキテクチャのバイナリの互換レイヤーなので、現状 arm64 環境での実行には対応していないようです(詳しく調べてない)。なお、EDCB-Wine のリポジトリに同梱している EDCB の Windows バイナリは x64 向けのものです。
…とはいえ Docker 環境に全て閉じ込めているので、M1 Mac で x64 イメージの MySQL を動かすのと同じような方法で、QEMU などを併用して動作させられるかもしれません(安定性はちょっとわからないですが…)。動作報告お待ちしてます。

GitHub - tsukumijima/EDCB-Wine: EDCB を Wine を使って Linux 上で動作させるための Docker Compose 構成
EDCB を Wine を使って Linux 上で動作させるための Docker Compose 構成 - tsukumijima/EDCB-Wine

さて手順を…となるところですが、EDCB-Wine に関しては導入方法がちょっと特殊かつ分量が長めなので、懇切丁寧に説明されている Readme に説明を譲ります。Readme を読んでください。
Readme の手順にしたがってセットアップすれば、比較的簡単に導入できるはずです…!
ドキュメントの執筆だけで確か1週間くらいかかってた気がします。

…ただし ISDBScanner で生成した EDCB-Wine 向けの設定ファイルを使うため、EpgDataCap_Bon でのチャンネルスキャンとその後の手動編集の手順だけは飛ばしてください…!!!

# scanned/ フォルダ以下の EDCB-Wine 向けチャンネル設定ファイルをコピー
# EDCB-Wine は /opt/EDCB-Wine 以下にインストールされているものとする
# 環境次第ではコピー先のパーミッションや所有者/グループ設定に気をつけること
cp -a scanned/EDCB-Wine/* /opt/EDCB-Wine/EDCB/Setting/

今回は ISDBScanner の出力結果をそのまま使うので、時間がかかるチャンネルスキャンと手動編集の行程はスキップできます。ちゃんと BonDriver_mirakc_T の方は地上波のみ、BonDriver_mirakc_S の方は BS/CS のみ記述されているのでご安心を。

ISDBScanner の出力結果を利用することでチャンネルスキャンの手間を省けるだけでなく、BonDriver_mirakc_T/S でそれぞれ地上波/衛星チャンネルごとに分ける手動編集の工程が不要になります。

生成されたチャンネル設定ファイルをコピーできたら、4.2. EpgTimerSrv の起動と設定 に進んでください。念のため EpgDataCap_Bon で受信できるか確認しておくと良いでしょう。

なお、ISDBScanner のスキャン結果は通常の EpgDataCap_Bon でのチャンネルスキャンと異なり .ChSet4/5.txt 内のチャンネル名がすべて半角になっていますが、これは現状の仕様です。
ISDBScanner が利用している ariblib が ARIB 特有の文字エンコード方式である8単位符号の適切な半角/全角の判定に対応しておらず技術的に自前での実装が厳しそうだった上、EDCB のメンテナである xtne6f 氏から『ChSet4/5.txt に記載されているチャンネル名が EPG のチャンネル名と一致している必要はなく、動作には支障しない』との見解を頂きました。
こうした実装上の問題 + もともと半角の方が見栄えが良いということで、チャンネル名は元の表記に関わらずすべて半角に揃える実装となっています。

KonomiTV のインストール

GitHub - tsukumijima/KonomiTV: KonomiTV: Kept Organized, Notably Optimized, Modern Interface TV media server
KonomiTV: Kept Organized, Notably Optimized, Modern Interface TV media server - tsukumijima/KonomiTV

EDCB-Wine のセットアップができたところで、いよいよ KonomiTV をインストールしていきます。

地味にこのブログで KonomiTV の存在に触れるのはじめてな気がする…。作者なのに今まで記事を書くのをサボっていた(実装されている機能が少なくて紹介するのも…だったのもある)。

…なんですが KonomiTV も Readme のドキュメントに懇切丁寧に導入方法から事前準備まで書いてあるので、以降の導入方法は Readme に丸投げします。Readme 側と更新同期させるの面倒だし…
Readme に記載の通りインストーラーを実行すれば、かなり簡単に導入できるはずです!

インストーラーをダウンロードする際、バージョンごとの リリースノート も一読しておくことを強く推奨します。特定バージョンのみに適用される重要事項が記載されています。

下記に今回構築した環境で KonomiTV をセットアップする際の備考を、箇条書きでメモしておきます。

  • PM2 (ローカル) でも Docker でもインストールできます。
    基本どちらでも動くように作ってあるつもりなのでお好みで。ただし、Docker 環境での検証は今のところあまり行っていません。
    • Docker の方が環境依存は少なくなりますが、KonomiTV 自体外部依存関係をすべて「サードパーティーライブラリ」としてすべて自前で保持する設計になっているため、Ubuntu / Debian 系であればローカルインストールでも問題なく動作するはずです。
  • バックエンドは Mirakurun と EDCB から選べます。
    ただし2023年10月時点の KonomiTV にはライブ視聴機能しか実装されていないため、EPG や放送波ストリームを Mirakurun から取得するか、Mirakurun をチューナーとして使う EDCB-Wine から取得するかの違いでしかありません。
    • 単純にチューナー起動時間のパフォーマンスを求めたいのであれば余計なオーバーヘッドがない Mirakurun バックエンドをおすすめします。
    • EDCB-Wine から Mirakurun にアクセスする際のチューナー優先度は BonDriver_mirakc の ini 設定で 100 に設定されています。
      もし Mirakurun バックエンド利用中に EDCB-Wine から録画が開始され、かつ視聴中のチューナーを潰さないと録画できない状況の場合、チューナー優先度に基づき EDCB-Wine (BonDriver_mirakc) の方が優先されるはずです。
    • EDCB バックエンド利用時は起動中の EpgDataCap_Bon 自体が EDCB-Wine (EpgTimerSrv) によって管理されます。もし視聴中チューナーを立ち下げないと当該番組を録画できない状況の場合は、EpgTimerSrv によって視聴中の EpgDataCap_Bon のチューナープロセスが終了されるはずです。
    • …つまりどちらのバックエンドを利用しても、いざチューナーが足りなくなった際は KonomiTV 側のライブストリーミングが止まり、録画タスクが最優先されるはずです。もっとも多チューナー環境につき実検証はあまりできていませんが…。
  • ローカルインストールを行った場合、ハードウェアエンコーダーを利用するには別途 apt パッケージのインストールが必要になります。
    • Docker インストールでは QSV や AMD VCE などの基本ドライバなどが Docker イメージに含まれていますが、NVENC を使う場合は docker-compose.yaml の変更が必要になります(インストーラーから導入した場合は環境に合わせて自動編集される)。

あとがき

ろくに検証もしてないコマンド集でしたが、みなさんのお役に立てたようでしたら幸いです。

記事に記載のコマンドが間違ってる・動かなかったなどあればお気軽にコメントをお寄せください。
記事の誤りでしたらすぐに修正しますし、コメント内容からそちらのエラー原因をエスパーできそうであれば確認しだい返信させていただきます(すべてのコメントへの返信をお約束するものではありません)。

コメント

  1. 件名:自己解決しました

    前のコメントで「dockerのビルドができない」とお伝えしましたが、こちらのDNSの設定の問題でした。
    nameserverを8.8.8.8に設定したところ、うまくビルドできました。

    お騒がせしましたm(_ _)m

  2. EDCB-Wine のインストールと設定まで完了し、EPGの取得を行いましたが、mirakurunで番組表が表示されません
    mirakurunのログで正常に保存しているように見え、実際にデータが入っていることも確認できたのですが…

    > save db `/usr/local/var/db/mirakurun/programs.json` w/ integirty xxxxxx

    なにかお心あたりや調査ポイントはありますでしょうか

  3. 解決しました…

    https://github.com/tsukumijima/EDCB-Wine/blob/master/Readme.md#5-edcb-material-webui-%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9

    > すぐに EPG 取得を行いたい場合は、番組表ページ右上のメニューから「EPG 取得」をクリックしてください

    とありますがこちらではうまく行かず、EDBC_WineでEpgDataCap_Bonを起動してEPG取得を実行したらOKでした。