ホスト側でチューナーのドライバとカードリーダー(pcscd)は用意されているものとする。 もしくは Docker kurukurumaware/b-cas-serverを利用してpcscdサーバーを立てておく。
ここではチューナーにPX-W3U4を使い、カードリーダーは外付けを使ってシステムを構築したやり方を説明。
/etc/mirakc Mirakcの設定ファイルを置く。コンテナRUN時にコンテナ内に/etc/mirakcとしてマウントする。
dockerのコンテナを起動後終了してもEPGデータが残るように、Dockerボリュームを作成する
docker volume create --name=mirakc-epg
Dockerボリュームが必要なくなった時には、下記コマンドで削除する。
docker volume rm mirakc-epg
コンテナ実行前に次の3つのファイルを同じディレクトリ上に用意する。
config.yml
mirakurun.openapi.json
start(シェルスクリプトを実行したい時に配置)
mirakcのconfig.md等読んで作成する。
下記コマンドで取得できるらしいのだが、何だか途中で止まってしまったので、別の手段をとった。
curl -fsSL https://raw.githubusercontent.com/masnagam/mirakc/master/scripts/mirakurun-openapi-json | sh -s -- -c
用は最新のmirakurunにコマンドを発行して結果をファイルに書き込むことなのでmirakurunを 動かして下記コマンドをmirakurunに対して発行すればよい。
curl -fsSL http://192.168.1.10:40772/api/docs > mirakurun.openapi.json
mirakurun.openapi.jsonの内容はMirakurunやEPGStationのバージョンアップ時に変更されたりするらしいので、出来るだけ最新の物を利用すべきなのだが、2020/07/05時点のものを下記コマンドでgithubから取得できる。
curl -fsSL https://raw.githubusercontent.com/kurukurumaware/docker-mirakc/master/sample/mirakurun.openapi.json?token=AQEK4TW3KHDDOYDZAT6NZHC7BACEW > mirakurun.openapi.json
基本的にいらないファイルなのだが、mirakcが起動する前に実行したいシェルスクリプト等あれば"start"というファイル名でスクリプトを作成する。作成したstartスクリプトには "chmod +x start" で実行権限を付けておく。
下のstarスクリプトの例では必要なライブラリファイルをホスト上のstartスクリプトと同じディレクトリに配置することで、コンテナ内の/usr/lib/ディレクトリにコピーする。
#!/bin/sh
if [ -e /etc/mirakc/libpcsclite.so.1.0.0 ]; then
cp /etc/mirakc/libpcsclite.so.1.0.0 /usr/lib/
fi
docker run --rm --init \
--name mirackc \
-v /var/run:/var/run \
-p 40772:40772 \
-v /etc/mirakc:/etc/mirakc \
-v mirakc-epg:/var/lib/mirakc/epg \
--device=/dev/px4video0:/dev/video0 \
--device=/dev/px4video1:/dev/video1 \
--device=/dev/px4video2:/dev/video2 \
--device=/dev/px4video3:/dev/video3 \
kurukurumaware/mirakc
-v /var/run:/var/run
スマートカードリーダー(B-CASカード)のサーバーpcscdとの通信の為と、
EPGStationとの通信の為のソケットファイルに必要
-p 40772:40772
mirakcにアクセスするポート番号
-v /etc/mirakc:/etc/mirakc
ホストのディレクトリをコンテナ内の/etc/mirakcディレクトリにマウントする。
-v [指定ディレクトリ]:/etc/mirakc
-v mirakc-epg:/var/lib/mirakc/epg
EPGデータを docker volume 上に格納する。
--device=/dev/px4video0:/dev/video0
チューナーのデバイスファイルをコンテナからアクセス可能にする。
--device=[ホスト上のデバイスファイルの名称]:[config.ymlファイルに設定したデバイスファイルの名称]
docker container stop [CONTAINER ID]
-it,-eオプションと/bin/shを付けて起動する。この起動を行う場合/usr/local/bin/mirakc-runスクリプトは実行されない。
docker run -it --rm --init \
--name mirackc \
-v /var/run:/var/run \
-p 40772:40772 \
-v /etc/mirakc:/etc/mirakc \
-v mirakc-epg:/var/lib/mirakc/epg \
--device=/dev/px4video0:/dev/video0 \
--device=/dev/px4video1:/dev/video1 \
--device=/dev/px4video2:/dev/video2 \
--device=/dev/px4video3:/dev/video3 \
-e RUST_LOG=info,mirakc=debug \
kurukurumaware/mirakc /bin/sh
シェルで起動した際にコンテナ内でmirakcを起動する場合
/usr/local/bin/mirakc-run
EPG関連ファイルの確認
ls -l /var/lib/mirakc/epg
録画コマンドのテスト
recpt1 --b25 --strip 22 10 /root/test.ts --device /dev/video2
フィルター等の外部プログラムが stderr に出力するログを確認したい場合は、環境変数 MIRAKC_DEBUG_CHILD_PROCESS を変更
export MIRAKC_DEBUG_CHILD_PROCESS=''
下記の内容でdocker-compose.yml を作成する。
version: '3.7'
services:
mirakc:
image: kurukurumaware/mirakc
container_name: mirakc
devices:
- /dev/px4video0:/dev/video0
- /dev/px4video1:/dev/video1
- /dev/px4video2:/dev/video2
- /dev/px4video3:/dev/video3
ports:
- 40772:40772
volumes:
- mirakc-epgdata:/var/lib/mirakc/epg
- /var/run:/var/run
- /etc/mirakc:/etc/mirakc:ro
environment:
TZ: Asia/Tokyo
RUST_LOG: info
MIRAKC_DEBUG_CHILD_PROCESS: ''
MIRAKC_ARIG_LOG: info
volumes:
mirakc-epgdata:
name: mirakc-epg
driver: local
起動時にservices,clocks,schedulesのEPGデータがまだ作成されていない場合は、それぞれエラーが表示される。しばらく起動したまま時間おいてEPGデータ作成された場合は次回から表示が出なくなる。
mirakc | 2020-06-20T20:27:06.153605429+09:00 ERROR mirakc::epg: Failed to load services: std::io::error: No such file or directory (os error 2)
mirakc | 2020-06-20T20:27:06.153929448+09:00 ERROR mirakc::epg: Failed to load clocks: std::io::error: No such file or directory (os error 2)
mirakc | 2020-06-20T20:27:06.153996624+09:00 ERROR mirakc::epg: Failed to load schedules: std::io::error: No such file or directory (os error 2)
地上波放送
http://[PCのIPアドレス]:40772/api/channels/GR/[チャンネル]/stream
http://192.168.11.7:40772/api/channels/GR/31/stream
BS放送
http://[PCのIPアドレス]:40772/api/channels/BS/[config,ymlのchannel名]/services/[service ID]/stream
NHK BSプレミアムの場合
http://192.168.11.7:40772/api/channels/BS/BS03_1/services/103/stream
CS放送
http://[PCのIPアドレス]:40772/api/channels/CS/[config,ymlのchannel名]/services/[service ID]/stream
ファミリー劇場の場合
http://192.168.11.7:40772/api/channels/CS/CS14/services/293/stream
Content type
Image
Digest
Size
96 Bytes
Last updated
about 6 years ago
docker pull kurukurumaware/part-mirakc-build