e-tipsmemo

ごった煮

Ubuntu 22.04 LTS 録画サーバー (2) Mirakurun

recpt1を正しく動作させることができたが
docker版mirakurunを入れたらバージョン違いで動かなかったり必要な共有ライブラリがなかったりなどいろいろあった。

とりあえずmirakurunを入れる

Mirakurun

Mirakurun/Platforms.md at master · Chinachu/Mirakurun · GitHub
を参考に、

mkdir ~/mirakurun/
cd ~/mirakurun/
wget https://raw.githubusercontent.com/Chinachu/Mirakurun/master/docker/docker-compose.yml

PT3ではない場合

- /dev/dvb:/dev/dvb

があるとエラーが出るのでコメントアウトした。

docker内からpx4のデバイスが見えるように以下を追加

      - /dev/px4video0:/dev/px4video0
      - /dev/px4video1:/dev/px4video1
      - /dev/px4video2:/dev/px4video2
      - /dev/px4video3:/dev/px4video3
      - /dev/px4video2:/dev/px4video4
      - /dev/px4video3:/dev/px4video5
      - /dev/px4video2:/dev/px4video6
      - /dev/px4video3:/dev/px4video7
docker-compose pull
docker-compose run --rm -e SETUP=true mirakurun
docker-compose up -d

sudoはいらない

正しく立ち上がると以下のようになる

curl -o - http://localhost:40772/api/version
{"current":"3.9.0-rc.2","latest":"3.9.0-rc.2"}

/opt/mirakurun/config/tuners.yml

こんな形に書き換えて
チューナーの個数分書く。

- name: PX_T4
   types:
     - GR
   command:  (recpt1のコマンド)
   isDisable: false

Config内のTunersで確認できる。

Configを書き換えたら、MirakurunのWeb管理画面の右上のRestartをする

docker logs mirakurun

で no available tuners とかがでていると、
recpt1が正しく動いていないかconfig.ymlの記述が間違ってたりする。

recpt1再ビルド

recpt1が正しく動いていない理由の1つに、
共有ライブラリが足りないとかバージョン違いとかという問題があった。

docker exec -it mirakurun bash
ldd recpt1

最新のrecpt1を使いたいが、
GLIB~~のような文言や、not foundといった文字列がある。

./recpt1: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./recpt1)
./recpt1: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./recpt1)
./recpt1: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./recpt1)
        linux-vdso.so.1 (0x00007ffcddde0000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f3738b21000)
        libarib25.so.0 => not found
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3738960000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f3738cbb000)

docker版mirakurun内部でrecpt1やlibarib25その他を前の記事と同じ手順でビルドしなおした

docker exec -it mirakurun bash

で中に入っていろいろとapt installすれば手順は同じ

動作確認としてmirakurunのdocker内で、recpt1コマンドを直接打つことで録画ができることを確かめる。

channel/scan

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

https://www.maspro.co.jp/contact/channel.pdf
にあるチャンネル番号が出てくるはず。
(出てこないときは、電波が弱かったりする)

電波が弱い例

./checksignal --device /dev/px4video7 <channel>

これは実際の電波が弱いわけではなく、
地デジとBSを混合した電波を分波せずに、
PLEXチューナーの地デジのところへ直接入力するとなぜかチャンネル16の電波が弱く見える現象
ちゃんと分波器を通してから地デジ入力すると、信号強度は正しくなる。

EPGstation

レポジトリ通りにやる
EPGStation/linux-setup.md at master · l3tnun/EPGStation · GitHub

config/config.yml

のmirakurunPathを書き換える

pm2で自動起動できるようにする。

configを書き換えたら

pm2 restart epgstation

で再起動する。

視聴確認

LANの別PC(Windows)から、Bondriver_mirakurunを入れたTVTestを使用して視聴する。
うまくいけばMirakurunのTuner管理画面で、Tunerがrecpt1によって占有されているのが見えるし、TVTestで視聴ができる。(この時は視聴できた)

問題

その後数日放置していると、TVTestを起動しても、Tuner管理画面のrecpt1プロセスが起動してはkillされるというのが高速で繰り返されることにより、視聴ができない現象が発生。(pidが高速で増加していく)
ログを見ても不明なので、別の対応策を考えることにした。→mirakc編

ここ最近dockerでごちゃごちゃやっていたが、
dockerは依存ライブラリをコンテナ内部で完結させられるからほかのアプリからの依存を気にしなくていいのが良いのだと思った。
しかし中身は最小限の環境が好まれるっぽいので(alpine linuxなどをベースにしている)、recpt1のようないろんな共有ライブラリを使用するアプリと相性がわるいのではないかという気がしてきた。
(シングルバイナリのrecpt1はないのかな?)