documents:os:freebsd:ptx:ptx-002
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン | |||
| documents:os:freebsd:ptx:ptx-002 [2026/05/07 22:20] – ↷ 移動操作に合わせてリンクを書き換えました。 k896951 | documents:os:freebsd:ptx:ptx-002 [2026/05/30 18:40] (現在) – ↷ 移動操作に合わせてリンクを書き換えました。 k896951 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | ====== FreeBSDでMirakurunを動かす ====== | ||
| + | |||
| + | 2019/ | ||
| + | 色々コメントを貰いドキュメント構成を変更。情報追記。 | ||
| + | |||
| + | 2017/ | ||
| + | FreeBSD 11.0 RELEASEで無事導入までできたのでその際のメモ書き。 | ||
| + | |||
| + | Mirakurun 2.6.1 はnode6サポートを終了。node8を使われたし。Updateすると当然パッチあてたファイルも書き換わるから再度修正がいる。 | ||
| + | |||
| + | ===== Mirakurunって何? ===== | ||
| + | |||
| + | DVR Tuner Server Service for Chinachu Air. | ||
| + | | ||
| + | |||
| + | Chinachu Airが何ぞや、という話は置いておく。 | ||
| + | |||
| + | Mirakurunはデジタル放送チューナーデバイスを管理するサービス。 | ||
| + | recpt1等物理層直叩きなプログラムを隠蔽し、HTTPのREST API経由で操作可能としている。\\ | ||
| + | 面倒なチューナーの管理を不要とできるので、このサービスに登録したチューナーデバイスは複数のプログラムやサービスで共用する事が可能になる。 | ||
| + | |||
| + | このサービスからEPG情報の取得や放送のストリーミング視聴ができるし、効率的なチューナーの利用がされるので、人によっては録画可能な番組が増えるかもしれない。 | ||
| + | |||
| + | 例えば、TOKYO MXの地上波デジタル放送だとマルチチャンネルと称し MX1, | ||
| + | チューナーが2つある環境で同時間帯のMX1, | ||
| + | * recpt1コマンド等単体の録画プログラムを使う場合MX1, | ||
| + | * Mirakurun(のサービス)を使う場合、1つのチューナーで受信が行われMX1, | ||
| + | |||
| + | という恩恵がある。 | ||
| + | |||
| + | ===== 前提 ===== | ||
| + | |||
| + | ここの説明では、 PT2/PT3 が稼働していて、[[documents: | ||
| + | |||
| + | 先に、いくつかディレクトリを作る。もしかすると / | ||
| + | < | ||
| + | < | ||
| + | # mkdir / | ||
| + | # mkdir / | ||
| + | # mkdir / | ||
| + | # chmod guo+rwx / | ||
| + | </ | ||
| + | |||
| + | ==== 追記 2019/01/28 ==== | ||
| + | |||
| + | また私の環境下では不要だったようなのですが、[[https:// | ||
| + | < | ||
| + | # mkdir -p / | ||
| + | </ | ||
| + | を実行しておく必要があったとの事です。 | ||
| + | |||
| + | ===== インストール ===== | ||
| + | |||
| + | Node.js配下で動作するサービスなので、それらも含めて前提ソフトウエアを先に導入しておく。 | ||
| + | Mirakurunの前提環境のバージョン情報から、以下を導入した。Portsでもpkgでも好きな方から導入すればいい。 | ||
| + | |||
| + | また、こちら [[http:// | ||
| + | |||
| + | ==== 前提ソフトウエアの導入 ==== | ||
| + | |||
| + | * < | ||
| + | * < | ||
| + | * shells/bash | ||
| + | * arib-b25-stream-test | ||
| + | |||
| + | === www/node8, www/npm5 === | ||
| + | |||
| + | Portsなりpkgなりで導入する。 | ||
| + | |||
| + | === shells/bash === | ||
| + | |||
| + | bashインストール後は以下のシンボリックリンクを張っておく。どうも / | ||
| + | |||
| + | < | ||
| + | ln -s / | ||
| + | </ | ||
| + | |||
| + | === arib-b25-stream-test インストール === | ||
| + | |||
| + | こちらは[[http:// | ||
| + | |||
| + | < | ||
| + | fetch https:// | ||
| + | tar xf arib-b25-stream-test-0.2.9.tgz | ||
| + | mv package arib-b25-stream-test | ||
| + | cd arib-b25-stream-test | ||
| + | mv package.json package.json.orig | ||
| + | sed -e ' | ||
| + | npm install . -g --unsafe | ||
| + | </ | ||
| + | |||
| + | ==== Mirakurunのインストール ==== | ||
| + | |||
| + | 今回はユーザ mirakurun を作ってホームディレクトリ下にgitでリポジトリをクローンしている。 | ||
| + | また、2017-05-19 のコミットで番組情報が集積されない不具合が修正されているので古いソースを取得しちゃった人は取り直し。 | ||
| + | |||
| + | < | ||
| + | # cd / | ||
| + | # git clone https:// | ||
| + | # cd Mirakurun | ||
| + | </ | ||
| + | |||
| + | === サポートOSにFreeBSDを追加 === | ||
| + | |||
| + | <code javascript package.json.diff> | ||
| + | *** package.json.org | ||
| + | --- package.json | ||
| + | *************** | ||
| + | *** 92,97 **** | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ! " | ||
| + | ] | ||
| + | } | ||
| + | --- 92,98 ---- | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ! " | ||
| + | ! " | ||
| + | ] | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | === Server.config に Listenアドレスのパラメタを追加 === | ||
| + | |||
| + | オリジナルは、利用可能なすべてのnicのすべてのアドレスでListenするようになっている。 | ||
| + | |||
| + | NIC1枚でIPを1つ割り当てをしている様な普通の環境なら問題ない。\\ | ||
| + | が、うちはNIC2枚かつ各NICで複数IPアドレスを振っているのでちと困る。 | ||
| + | |||
| + | <code javascript config.ts.diff> | ||
| + | *** src/ | ||
| + | --- src/ | ||
| + | *************** | ||
| + | *** 24,29 **** | ||
| + | --- 24,30 ---- | ||
| + | |||
| + | // as Remote Server | ||
| + | readonly port?: number; | ||
| + | + | ||
| + | |||
| + | /** `true` to disable IPv6 listening */ | ||
| + | readonly disableIPv6?: | ||
| + | </ | ||
| + | |||
| + | <code javascript Server.ts.diff> | ||
| + | *** src/ | ||
| + | --- src/ | ||
| + | *************** | ||
| + | *** 44,54 **** | ||
| + | } | ||
| + | |||
| + | if (serverConfig.port) { | ||
| + | ! | ||
| + | ! | ||
| + | ! | ||
| + | ! " | ||
| + | ! ]; | ||
| + | |||
| + | if (serverConfig.disableIPv6 !== true) { | ||
| + | addresses = [ | ||
| + | --- 44,62 ---- | ||
| + | } | ||
| + | |||
| + | if (serverConfig.port) { | ||
| + | ! if (serverConfig.addr) { | ||
| + | ! | ||
| + | ! | ||
| + | ! | ||
| + | ! " | ||
| + | ! ]; | ||
| + | ! } else { | ||
| + | ! | ||
| + | ! | ||
| + | ! | ||
| + | ! " | ||
| + | ! ]; | ||
| + | ! } | ||
| + | |||
| + | if (serverConfig.disableIPv6 !== true) { | ||
| + | addresses = [ | ||
| + | </ | ||
| + | |||
| + | === Mirakurunビルド === | ||
| + | |||
| + | < | ||
| + | # npm install pm2 -g | ||
| + | # npm install | ||
| + | # npm run build | ||
| + | # npm install . -g --unsafe --production | ||
| + | </ | ||
| + | |||
| + | pm2はmirakurunをバックグラウンドで実行するためのデーモンツール。 | ||
| + | |||
| + | 次にファイルコピー。 | ||
| + | < | ||
| + | # cp -v config/ | ||
| + | # cp -v config/ | ||
| + | # cp -v config/ | ||
| + | # cp -v config/ | ||
| + | </ | ||
| + | |||
| + | ==== Mirakurunの設定 ==== | ||
| + | |||
| + | ディレクトリ / | ||
| + | 以下のコマンドで対応する設定ファイルを編集できる。 | ||
| + | < | ||
| + | # mirakurun config server | ||
| + | # mirakurun config tuners | ||
| + | # mirakurun config channels | ||
| + | </ | ||
| + | |||
| + | === server.yml === | ||
| + | |||
| + | addr パラメタを記述しなければオリジナルの振る舞いになる。 | ||
| + | addr パラメタを記述する時は IPアドレスを一つだけ定義。 | ||
| + | <code yaml> | ||
| + | # logLevel: < | ||
| + | logLevel: 2 | ||
| + | |||
| + | # path: < | ||
| + | path: / | ||
| + | |||
| + | # port: < | ||
| + | # You can change this if port conflicted. | ||
| + | # Don't expose this port on the internet, not even with NAPT. | ||
| + | # Use this in LAN or VPN. | ||
| + | # `~` to disable TCP port listening. | ||
| + | port: 40772 | ||
| + | addr: 192.168.1.100 | ||
| + | </ | ||
| + | |||
| + | === tuners.yml === | ||
| + | |||
| + | この定義は | ||
| + | * チューナーはPT2が1枚で地上波デジタル放送受信だけ使用。 | ||
| + | * recpt1コマンドをチューナーアクセスに使う。--b25オプションで常時スクランブル解除する。 | ||
| + | * デコーダーは未指定。 | ||
| + | |||
| + | デバイス名はFreeBSDでのデバイス名でLinuxのそれとは違うので注意。 | ||
| + | |||
| + | <code yaml> | ||
| + | - name: PT2-T1 | ||
| + | types: | ||
| + | - GR | ||
| + | command: recpt1 --b25 --device / | ||
| + | decoder: ~ | ||
| + | isDisabled: false | ||
| + | |||
| + | - name: PT2-T2 | ||
| + | types: | ||
| + | - GR | ||
| + | command: recpt1 --b25 --device / | ||
| + | decoder: ~ | ||
| + | isDisabled: false | ||
| + | </ | ||
| + | |||
| + | 次の定義は | ||
| + | * チューナーはPT2が1枚で地上波デジタル放送受信だけ使用。 | ||
| + | * recpt1コマンドをチューナーアクセスに使う。 | ||
| + | * デコーダーに arib-b25-stream-test を利用する。 | ||
| + | |||
| + | <code yaml> | ||
| + | - name: PT2-T1 | ||
| + | types: | ||
| + | - GR | ||
| + | command: recpt1 --device / | ||
| + | decoder: arib-b25-stream-test | ||
| + | isDisabled: false | ||
| + | |||
| + | - name: PT2-T2 | ||
| + | types: | ||
| + | - GR | ||
| + | command: recpt1 --device / | ||
| + | decoder: arib-b25-stream-test | ||
| + | isDisabled: false | ||
| + | </ | ||
| + | |||
| + | === channels.yml === | ||
| + | |||
| + | 自分の地域での受信環境に合わせる。私の場合は以下だけ追加。 | ||
| + | |||
| + | <code yaml> | ||
| + | - name: TVK | ||
| + | type: GR | ||
| + | channel: ' | ||
| + | isDisabled: false | ||
| + | </ | ||
| + | |||
| + | ==== Mirakurun起動 ==== | ||
| + | |||
| + | 引数無しだとヘルプが表示される。 | ||
| + | |||
| + | < | ||
| + | # mirakurun | ||
| + | |||
| + | Usage: mirakurun < | ||
| + | |||
| + | < | ||
| + | |||
| + | config server | ||
| + | config tuners | ||
| + | config channels | ||
| + | |||
| + | log | ||
| + | log --help | ||
| + | |||
| + | status | ||
| + | start Start services. | ||
| + | stop Stop services. | ||
| + | restart | ||
| + | |||
| + | version | ||
| + | help Output this information. | ||
| + | |||
| + | # | ||
| + | </ | ||
| + | |||
| + | 以下のコマンドで起動する。 | ||
| + | < | ||
| + | # mirakurun start | ||
| + | </ | ||
| + | |||
| + | コンソール上でログを見る場合は以下のコマンドで。 | ||
| + | < | ||
| + | mirakurun log server | ||
| + | </ | ||
| + | |||
| + | === 追記 2019/01/28 === | ||
| + | |||
| + | 私の環境下では発生しなかったのですが、[[https:// | ||
| + | < | ||
| + | # mirakurun start | ||
| + | [PM2][ERROR] script not found : / | ||
| + | # | ||
| + | </ | ||
| + | とエラーが発生して起動せず、次の手順が必要になったとのことです。 | ||
| + | |||
| + | < | ||
| + | # cd / | ||
| + | # pm2 start processes.json | ||
| + | </ | ||
| + | |||
| + | ===== 録画クライアント ===== | ||
| + | |||
| + | クライアント rivarun をインストールする。 | ||
| + | |||
| + | < | ||
| + | # npm install rivarun -g | ||
| + | </ | ||
| + | |||
| + | 引数無しでヘルプ表示。 | ||
| + | < | ||
| + | # rivarun | ||
| + | |||
| + | Usage: | ||
| + | rivarun [--b25] [--mirakurun host:port] [--priority priority] [--sid SID] [--ch type/ | ||
| + | Remarks: | ||
| + | * if rectime | ||
| + | * if destfile is `-`, stdout is used for output. | ||
| + | * if `--sid` option specified, will ignore `--ch` option. | ||
| + | Options: | ||
| + | --b25: | ||
| + | --mirakurun host:port: Specify Mirakurun hostname and portnumber | ||
| + | --priority priority: | ||
| + | --sid SID: | ||
| + | --ch type/ | ||
| + | type = GR | BS | CS | SKY | ||
| + | --help: | ||
| + | --version: | ||
| + | --list: | ||
| + | |||
| + | # | ||
| + | </ | ||
| + | |||
| + | ほぼ recpt1と同じように利用できる。 | ||
| + | < | ||
| + | # recpt1 --b25 --sid hd 18 180 ch18.ts | ||
| + | # rivarun --b25 --ch GR/18 180 ch18.ts | ||
| + | # rivarun --b25 --mirakurun 10.0.0.100: | ||
| + | </ | ||
| + | |||
| + | Mirakurunのtuners.ymlの設定でdecoderオプションを指定できているならrivarunの--b25オプションは意味あり。 decoder未指定の場合は、recpt1の --b25 オプションでスクランブル解除を行うことになるかと。\\ | ||
| + | Mirakurunが稼働しているマシンがリモートにあるのなら --mirakurun オプションでMirakurunのサービスを指定できる。 | ||
| + | |||
| + | |||
| + | ===== ストリーミング ===== | ||
| + | |||
| + | recpt1のように、VLCメディアプレイヤーでストリーミング視聴もできる。以下は192.168.1.20: | ||
| + | {{documents: | ||
| + | |||
| + | サービスIDを指定しないため、チャンネルによってはワンセグがストリーミングされるかもしれない。その場合にはサービスIDを明示する。\\ | ||
| + | {{documents: | ||
| + | |||
| + | サービスIDはMirakurunのAPIで確認ができる。\\ | ||
| + | {{documents: | ||
| + | |||
| + | 以下のrivarunコマンドでAPIから取得する事もできる。 | ||
| + | < | ||
| + | # rivarun --list | nkf | ||
| + | </ | ||
| + | rivarunの表示はutf-8で行われるので、nkfで文字化けを抑止している ※うちの環境はeuc-jpなので。 | ||
| + | |||
| + | または、Chinachu γ を導入するのもよい。 | ||
| + | | ||
| + | |||
| + | Chinachu γならブラウザでストリーミング視聴出来たり、予約録画や番組表を参照できる。 | ||
| + | |||
| + | {{tag> 技術資料 FreeBSD PT1 PT2 PT3 Mirakurun rivarun}} | ||
documents/os/freebsd/ptx/ptx-002.txt · 最終更新: by k896951
