Mac でテレビ録画サーバを立てる
Apple Silicon の Mac なら、Linux と同じ1行で denpa ごと立ち上がってブラウザが開きます
(入口の install.sh は1つで、OS を見て振り分ける)。Mac 用は v1.23.0 からで、
それより前の版は入れられません (install.sh がそう言って止まる)。
curl -fsSL https://raw.githubusercontent.com/danything/denpa/main/install.sh | bashエージェントは Mac の上でそのまま、denpa 本体は Docker で動かします。 Mac の Docker
(Docker Desktop / OrbStack / colima) はコンテナに USB を渡せないので、エージェントは
コンテナに入れられません。denpa のコンテナからは
host.docker.internal でエージェントを呼びます (compose.mac.yml。
compose.prod.yml から tuner-agent を外したもの)。
- エージェント — 最新のリリースから取り、LaunchAgent
(
~/Library/LaunchAgents/io.github.danything.denpa-agent.plist) に載せます。 ログインで起き、落ちたら起き直し、止めるときは録画の終わりを待ちます (launchd に殺されないよう、待ちの上限を 6 時間より長くしてある) - denpa 本体 — エージェントと同じ版の compose.mac.yml を
~/denpa/compose.ymlに置いてdocker compose up -d。答えたらブラウザで開きます (--no-openで開かない)。genkan が動いているか 80・443 が空いていれば、Linux と同じくhttp://denpa.localhostで開けるようにします (install.md)
- 要るのは Docker だけ。 px4-userland / siano-userland の Mac 版は libusb を中に抱えている (px4-userland 0.1.7・siano-userland 0.1.9 から) ので、Homebrew は要りません。 Docker は勝手に入れません。無い・起きていないときはエージェントだけ入れ、 Docker Desktop か OrbStack を入れる (起こす) よう言って終わります。入れたらもう一度流す
- 入れるのは全部ユーザーの下で、sudo は要りません
| 置き場 | 中身 |
|---|---|
~/denpa/ (DENPA_HOME) |
Linux と同じ置き場。compose.yml (上げ直すたびに上書き)・compose.override.yml (手を入れるならここ。無いときだけ雛形を作る)・config/ (エージェントの tuners.json / channels.json) |
~/Library/Application Support/denpa-agent/ |
エージェント・px4-userland・siano-userland (プログラムだけ) |
~/Movies/denpa/recorded |
元のTS。エージェントとコンテナの両方に見せる (掛かったまま録れたものを後から復号するとき、denpa は相対パスで要求し、エージェントが直に読み書きする) |
~/Movies/denpa/library |
出来上がった録画 (Finder から見える) |
Docker のボリューム denpa_denpa-data |
DB。SQLite の錠は Mac から見せたフォルダ越しだと当てにならないので、名前付きボリュームに |
~/Library/Logs/denpa-agent.log |
エージェントのログ |
- もう一度流せば上げ直し (エージェントも denpa のイメージも最新のリリースへ)。
消すときは
… | bash -s -- --uninstall。エージェント・LaunchAgent・キャッシュを外し、 コンテナを畳みます。~/denpa(compose と設定)・録画・DB は残し、消し方を言います (Linux と同じ) - denpa 本体は別の Linux で動かし、Mac にはエージェントだけ置くなら
… | bash -s -- --no-docker。 denpa のTUNER_AGENT_URLにhttp://<Mac の名前>.local:25252を書きます (別の所に置くのと同じ構成) - 誰を通すか (
TRUSTED_NETWORKS) は compose.prod.yml と同じ私設網です。Mac のブラウザから localhost で入ると、送り元は Docker のネットワークの出口 (私設網の中) に見えるので通ります
LaunchAgent の環境変数は、コンテナ既定の置き場を Mac の置き場に向け直すものだけです
(AGENT_PORT (25252 のまま) TUNERS_FILE CHANNELS_FILE PX4_USERLAND_DIR PX4_FIRMWARE PX4_RUNTIME_DIR
SIANO_USERLAND_DIR SIANO_FIRMWARE RAW_DIR)。PX4_RUNTIME_DIR を
~/Library/Caches/denpa-agent と短くしているのは、px4d の制御ソケットのパスが macOS では
104 バイトまでだからです。IT930x のファームウェアはコンテナと同じく PLEX のドライバから
手元で切り出します (ハッシュ3つで確かめる)。
Linux と違うところ。
- チューナーは px4-userland と siano-userland の機材だけ。 macOS には DVB が無いので、 PT2/PT3 のような PCI の機材は使えません
- カードリーダー: px4-userland の内蔵リーダーはそのまま (px4d に聞く)。USB のリーダーは
usbfs を直接扱えないので、macOS 標準の PC/SC (PCSC.framework) 越しに扱います
(
Pcsc.cs)。denpa-agent --cardはそのリーダーを並べます。動いている間はリーダーを 排他で使うので、他のアプリはカードを使えません - pipe を広げられない (
F_SETPIPE_SZが無い) ので、siano-ts から受ける溜めは Linux より浅い (px4d から受ける溜めは pipe を使わないので、Linux と同じ 8MB) - Apple Silicon だけ (Intel Mac 用の px4-userland / siano-userland が無い)
- Mac の実機でチューナーとカードを繋いで確かめたことはまだありません。 CI でビルドして起こし、
入れ方を最後まで流すところまで (
.github/workflows/test.ymlのagent-macos。 Mac のランナーには Docker が無いので、compose.mac.yml は Linux のジョブ (install-linux) で書き方だけ見る)