Sign inSign up

kurukurumaware/part-mirakc-build

By kurukurumaware

•Updated about 6 years ago

mirakcのビルド

Image
0

2.4K

kurukurumaware/part-mirakc-build repository overview

⁠MirakcをDockerで使ってみた

⁠使い方

ホスト側でチューナーのドライバとカードリーダー(pcscd)は用意されているものとする。 もしくは Docker kurukurumaware/b-cas-server⁠を利用してpcscdサーバーを立てておく。

ここではチューナーにPX-W3U4を使い、カードリーダーは外付けを使ってシステムを構築したやり方を説明。

 

⁠ホストPCにディレクトリを準備

/etc/mirakc Mirakcの設定ファイルを置く。コンテナRUN時にコンテナ内に/etc/mirakcとしてマウントする。

⁠Dockerボリュームの準備

dockerのコンテナを起動後終了してもEPGデータが残るように、Dockerボリュームを作成する

docker volume create --name=mirakc-epg

Dockerボリュームが必要なくなった時には、下記コマンドで削除する。

docker volume rm mirakc-epg

 

⁠設定ファイルの準備

コンテナ実行前に次の3つのファイルを同じディレクトリ上に用意する。
config.yml⁠ mirakurun.openapi.json⁠
start⁠(シェルスクリプトを実行したい時に配置)

⁠config.ymlの設定

mirakcのconfig.md⁠等読んで作成する。

⁠mirakurun.openapi.jsonの設定

下記コマンドで取得できるらしいのだが、何だか途中で止まってしまったので、別の手段をとった。

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

⁠startスクリプトの作成

基本的にいらないファイルなのだが、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コマンドによる起動

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ファイルに設定したデバイスファイルの名称]

 

⁠mirakc 停止

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 からの起動

下記の内容で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)  
⁠VLC等からの視聴テスト

地上波放送

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

Tag summary

Content type

Image

Digest

Size

96 Bytes

Last updated

about 6 years ago

docker pull kurukurumaware/part-mirakc-build