チューナー設定
チャンネル設定と同様に,チューナー設定もMirakurunと一定の互換性があります.
Mirakurunのtuners.ymlの例:
- name: gr1
  types: [GR]
  command: recpt1 --device /dev/px4video2 <channel> - -
  decoder: /usr/local/bin/decoder
mirakcのconfig.ymlの例:
tuners:
  - name: gr1
    types: [GR]
    command: recpt1 --device /dev/px4video2 {{{channel}}} - -
ここで,tuners[].commandにはテンプレート文字列が指定されており,{{{と}}}
(Triple Mustache)または{{と}}(Double Mustache)で囲われた識別子(上記の例ではchannel)は,テンプレートパラメーターと呼ばれる特別な値です.mirakcは,テンプレート言語としてMustacheを採用しており,リスト型のテンプレートパラメーターの展開もサポートしています.tuners[].command以外にもいくつかの設定項目でテンプレート文字列が指定可能で,設定項目毎に使用可能なテンプレートパラメーターは異なります.
Double MustacheとTriple Mustacheでは動作が異なる点に注意してください. 詳細はこちらに書かれています.
mirakcのチューナー設定にはdecoderプロパティは存在しません.その代わりに,後述するフィルター設定を使用します.
Dockerを使用している場合,以下のようにdocker-compose.ymlに使用するデバイスファイルを記述する必要があります.
version: '3'
services:
  mirakc:
    image: mirakc/mirakc:alpine
    container_name: mirakc
    init: true
    restart: unless-stopped
    # `devices`を追加
    devices:
      # チューナーコマンドで利用するデバイスファイルを列挙
      - /dev/px4video2
    ports:
      - 40772:40772
    volumes:
      - ./config.yml:/etc/mirakc/config.yml:ro
    environment:
      TZ: Asia/Tokyo
      RUST_LOG: info
ここまで設定すると,EPGデータの取得が可能になります.動くか試してみましょう.
# mirakcコンテナーの起動(Ctrl+Cで停止)
$ sudo docker compose up
...
... scan-services: performing...
...
... scan-services: Done successfully, 13s 714ms 157us 639ns elapsed
...
^CGracefully stopping... (press Ctrl+C again to force)
Stopping mirakc ... done
ここで,各行の始めの...は実際に表示されるテキストではなく,ログの省略を意味します.
たくさんのログが表示されますが,正しく動作していれば,上記のようなログを見つけることができます.
既に稼働しているMirakurun/mirakcをチューナーとして利用する
ちょっとした動作確認のために,わざわざチューナーのデバイスドライバーをインストールするのは面倒な作業です.このような場合には,以下のような設定を行い,既に稼働しているMirakurunまたはmirakcをチューナーとして利用することをお勧めします(同様のことはMirakurunでも可能です).
tuners:
  - name: upstream
    types: [GR, BS]
    command: >-
      curl -s http://upstream:40772/api/channels/{{{channel_type}}}/{{{channel}}}/stream?decode=0
上記のhttp://upstream:40772の部分は接続先のMirakurunまたはmirakcサーバーのURL
に置き換えてください.
Mirakurunとは異なり,mirakcの/api/channels/{{{channel_type}}}/{{{channel}}}/stream?decode=0
APIは,チューナーからの出力をそのまま送出します.NULLパケットすらドロップしません.そのため,TSパケットを処理するツールのテストなどにも使えて便利です.
curl -s http://mirakc:40772/api/channels/GR/27/stream?decode=0 | \
  MIRAKC_ARIB_LOG=debug mirakc-arib scan-services
設定例
一般的に利用されているチューナーコマンドに対する設定例を以下に記載します.
# typesプロパティ及びデバイスファイルのパスなどは,自分の環境に合わせて書き換え
# る必要があります
tuners:
  - name: recpt1
    types: [GR]
    command: >-
      recpt1 --device /path/to/dev {{{channel}}} - -
  - name: recdvb
    types: [GR]
    command: >-
      recdvb --dev 1 {{{channel}}} - -
  - name: dvbv5-zap
    types: [GR]
    command: >-
      dvbv5-zap -a 0 -c /path/to/conf -r -P {{{channel}}} -o -