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はないのかな?)