今回は Ubuntu での TV 録画サーバーのお話です。
3年くらい前から Chinachu+Mirakurun で環境を組んでいるのですが、システムのアップデートやメンテナンスのたびに設定方法を忘れてしまうので、ゴールデンウィーク中にメモまとめ&スクリプト化しましたので公開します。
この記事は、以下のような方向けです。
- Ubuntu のインストールはできるけど、TV 録画サーバー設定方法は難しくてよくわからないので、とにかくセットアップだけしたい人
- TV 録画サーバーの設定(もしくは既に運用)をしていて、設定のためのヒントを部分的に得たい人
ただあくまで自分用メモなので、どんな環境でも絶対に動作するという保証はありません。
動作確認環境
- Ubuntu 18.04 or 20.04 server (x86_64)
- 今回は 18.04.5 と 20.04.2 で動作確認
- デスクトップ版でも問題ないと思いますが、今回は試していません
- ネットワーク接続されていること(apt install でパッケージがインストールできること)
- PX-W3PE4(地上波 2ch + BS/CS 2ch チューナー)
- SCR3310(B-CAS カードリーダー)
おおまかな流れ
作業は以下の手順で進めます。
- Ubuntu をクリーンインストール
- PC に PX-W3PE4 と SCR3310 を接続(Ubuntu インストール前でも OK)
- Ubuntu にドライバをインストール
- Mirakurun+Chinachu 用の Docker コンテナをセットアップ
お急ぎの方向けセットアップガイド(3コマンドセットアップ)
- Ubuntu をクリーンインストール
- PC に PX-W3PE4 と SCR3310 を接続(Ubuntu インストール前でも OK)
- recorder-setup_20220404.tgz をダウンロード・展開
- 以下を実行
$ sudo ./px4-driver-setup.sh
$ sudo reboot # 再起動
$ ./px4-docker-setup.sh ~/recorder # 引数は録画ファイルの保存場所。sudo はつけない。
px4-docker-setup.sh の実行後1~2時間くらい待って、セットアップした PC の IP アドレスにブラウザでアクセスすれば、Chinachu の画面が見えるようになっているはずです。
これだけです。
Ubuntu インストール
これは特筆すべきところはありません。普通にインストールしてください。
PX-W3PE4 と SCR3310 を接続
これも特筆すべきところはありません。普通に接続するだけです。
PX-W3PE4 は PCIe x1 スロットを使いますが、こちらは給電のみで、実際のデータのやり取りは USB 経由で行います。
そのため、マザーボード上に USB 用のピンヘッダがないと使えないのでご注意ください。
あと、PX-W3PE4 上のカードリーダーは Ubuntu では使えませんので、おとなしく SCR3310 などのカードリーダーをきちんと購入しておきましょう。
ドライバなどをインストール
ホスト環境に PX-W3PE4 用ドライバと pcscd をインストールします。
とにかくインストールする
recorder-setup_20220404.tgz をダウンロード・展開します。
中に入っている px4-driver-setup.sh を sudo
つきで実行して、終わったら Ubuntu を再起動すれば OK です。
コマンドとしてはこれだけです。
$ sudo bash px4-driver-setup.sh
$ sudo reboot
内容の補足
以下、内容を知りたい方に関して少し補足です。興味ない方は飛ばしていただいて構いません。
pcscd
pcscd はホスト環境(Docker コンテナではなく、の意味)にインストールしています。
pcscd をコンテナ内に入れるとカードリーダーの USB ポートが固定されたり(別の USB ポートに挿しなおせない)、他用途でバッティングしたりであまりイイことないと思うんだけどな・・・と思ってまして、ホスト環境に直にインストールするようにしています。
チューナードライバ
チューナーのドライバは非公式版(というか個人的にはこちらが公式と言っていいほど安定していると思う)を使わせていただいています。
dkms にも対応していて最高です。
ファームウェア(pxw3u4_BDA_ver1x64.zip)は PLEX 公式のものをダウンロードするようにしていますが、いつダウンロードできなくなるかもわからないので(失礼)、別途ダウンロード済みのファイルをカレントディレクトリに置いておけばそちらを使用するようにしています。
参考サイト様
なおこの内容は、有名な「自分に負けないラボラトリー」様を参考にさせていただいております。みなさま手を合わせて感謝しましょう。
Mirakurun+Chinachu 用の Docker コンテナをセットアップ
Mirakurun と Chinachu をコンテナに閉じ込めてセットアップします。
とにかくセットアップする
PLEX のチューナーデバイスを使用されているのであれば、recorder-setup_20220404.tgz をダウンロードして px4-docker-setup.sh を実行するだけで OK です。
$ tar -xvzf recorder-setup.tgz
$ bash ./px4-docker-setup.sh $HOME/recorder
px4-docker-setup.sh
の引数は、録画データや各種コンフィギュレーションファイルの保存用のディレクトリを指定してください。
Docker のセットアップやらなんやら含めて全てまとめてやります。
Mirakurun 用の tuners.yml や channels.yml も自動生成します。
補足1
「とにかくセットアップ」したいだけの方も、こちらの補足1はごらんください。
実行ユーザー
root ではなく、普段使っている一般ユーザーで実行してください。
セットアップ時間
環境にもよりますが、セットアップにはかなり時間がかかります。
お出かけ前、就寝前などに実行するのがオススメです。
まず、初回セットアップ(Docker コンテナ作成)に20~30分程度かかります。
以下のように Successfully built と表示されていれば、コンテナ作成は完了しています。
Successfully built 171b8fbc586c
Successfully tagged recorder:latest
ae0f0397ba7c474a6197d70f1a59e30c929eff094f37b9e00eaed8b74e4103ca
ad27329958fb6d7e3a2659ad649d5aff2aef236726fc66be48d04bb4df7eb5f5
この時点では、ブラウザでアクセスしても何も表示されません。
初回セットアップ時の場合、ここからチャンネルスキャンが実施され、さらに15分ほどかかります。
頃合いを見て、セットアップしたホストの IP アドレスにブラウザでアクセスしてみてください。
Chinachu の画面が表示されると思います。
この時点では番組表などの情報が表示されませんが、正常です。
ここから EPG データのダウンロードなどが行われますので、番組表などが表示されるのにさらに1時間程度かかります。
録画ファイル保存場所
px4-docker-setup.sh
の引数に指定したディレクトリ(以下 $RECORDER)以下に、recorded ディレクトリが作成され、そこへ保存されます。
他にも chinachu ディレクトリや mirakurun ディレクトリもありますが、それらは気にしなくて OK です。
補足2
Docker あれこれ
Chinachu や Mirakurun コンテナはいくつか既に公開されていますので、そちらを使用された方が良いかもしれません。
が、ホントの意味で All-in-one が欲しかったので、自分で作成するようにしました。
コンテナ名は recorder-YYMMDD です。
スクリプトの先頭で CONTAINER_NAME 変数として定義しているので、適当に変更してもらって構いません。
docker-compose は使っていません。
コンテナ作成の前後でいろいろやりたいっていう場合、 docker-compose だとかゆいところに手が届かないというか・・・使いにくくありません?
px4-docker-setup.sh では、一般ユーザーで Docker を使用できるように設定します。
privileged 設定は使用していません。安易に使うのって良くないですよね(pcscd をホストにインストールしている理由の1つでもあります)。
ただしその代償として、コンテナのポータビリティ性が少し下がっています。
例えば、Ubuntu 18.04 環境上で作成した Docker イメージやコンテナを save や export して Ubuntu 20.04 環境上に持っていっても動作しません(たぶん)。
これはどうも、pcscd と libpcsclite のバージョン互換性の問題のようです。
でも、どうせそんなに頻繁に環境変えないでしょ?だったら privileged つけずに運用できた方がイイなと。
Docker Hub だとイメージで配る関係で、どんな環境でも動作させる必要がある→コンテナになんでもかんでも押し込める必要がある→ privileged が必要・・・ということだと思うんですが、自分で作ればそういう心配もありません。
コンフィグファイル保存場所
$RECORDER ディレクトリ以下に、chinachuと mirakurun ディレクトリが作成され、そこへ保存されます。
ここはコンテナ内の該当箇所を bind mount しているため、コンテナを更新してもそのまま引き継がれます。
具体的には、番組表や録画済み・録画予約一覧などの情報です。
チューナー設定
一応24チューナーまで判別して tuners.yml を作成するようにしています(ただ手元に多チューナー環境がないため動作は未確認)。
また、--lnb 15
オプションは付けていません。我が家はマンションということもありこれで特に問題なく動作していますが、必要に応じて適宜変更して下さい($RECORDER/mirakurun/config/tuners.yml)。
チャンネルスキャン
またまた「自分に負けないラボラトリー」様の神ツール、 mcconfig.pl を使用させていただいております。
地上波だけでなく、BS/CS のチャンネルスキャンも行い、Mirakurun 用の channels.yml を生成してくれるというまさに神ツールです。
コンテナ起動時に、コンテナ内の /scanned
ファイルの存在の有無をチェックし、mcconfig.pl を使用してチャンネルスキャンを実施するようにしています。
チャンネルスキャンを意図的に実施したい場合は、/scanned
ファイルを削除してコンテナを再起動してください。
まとめ
というわけで今回は TV 録画サーバーの設定でした。
Ubuntu PC と PLEX のチューナーがあれば、わりと簡単にセットアップできるので、チャレンジしてみてはいかがでしょうか。
ストリーム再生もできるので、簡易版 nasne としても使えますね。
USB 接続版もあります。
上でも書きましたが、どっちにしても USB 接続なので、取り回しや接続しやすさを考えると、自分がこれから買うならたぶんこっちを選ぶと思います。
最後に、このようなステキな環境を提供していただいている開発者のみなさまに感謝申し上げます。ありがとうございます。
コメント