先日CECH-ZD1 Jをジャンクで購入してパソコンに繋いで地デジを視聴することに成功したんだけれども、coaxはいろんなプラットフォームに対応していそうだったのでMacでも試してみた。
MacでTS抜きというと一応昔からあるみたいなんだけどちょっと設定が面倒で敷居が高いイメージだったんだけども、coaxはバイナリも提供されていて簡単にセットアップが出来そう。
今回は少し前にmacOS Sonomaに強制的にアップデートしたIntel Macを使用してみた。
まずはcoaxのダウンロードページからIntel Mac用のバイナリをダウンロードしてくる。Intel Macなのでcoax_Darwin_amd64.tar.gzを使用した。
これを解凍してターミナルを開いて解凍したフォルダで
./coax
を実行してみると
Usage: coax list [--tuners] [--json] coax scan [options] [dvbv5_channels.conf ...] coax scan --discover [options] coax export --format mirakurun --input scan.json [options] coax tune [options] coax card [options] [APDU ...] coax pcsc [options] coax version coax: a subcommand is required
と帰ってきたので、トルネをMacに接続して
./coax list
とコマンドを打ってみる。
TUNER DELIVERY STATE MODEL cech-zd1j:p20-2:0 ISDB-T free Sony CECH-ZD1 J (MB86H47A + DiB8096) Tuners are named from what each board reports about itself. Pass --tuners to open each board and confirm them.
こんな感じで認識していそう。
./coax scan --discover
でチャンネルスキャンをしてみる。
cech-zd1j:p20-2:0: working out ISDBT terrestrial ... 113 carriers to try [1/113] [####################] 100% done ISDBT/13 found (ts, 4491696 bytes) 17.27 Mbps CNR 24.8dB -58dBm (6.1s)
[2/113] [####################] 100% done ISDBT/14 no lock (5.6s) [3/113] [####################] 100% done ISDBT/15 no lock (5.5s) [4/113] [####################] 100% done ISDBT/16 no lock (5.5s) [5/113] [####################] 100% done ISDBT/17 found (ts, 2309956 bytes) 17.27 Mbps CNR 24.0dB -57dBm (3.7s) coax: context canceled
こんな感じでスキャンできているので動いていそう。(途中の局名は省略)とりあえず数チャンネル見つかったのでCtrl+Cで止めた。
とりあえずmacでトルネのチューナーを動かすことは出来たんだけど、ここからが大変だった。TVTestみたいにB25デコードできるようなプレーヤーがないのでlibarib25をインストールしてデコードさせてみた。
まずはbrewをインストール。Intel Mac用のbrewはサポートが終了しているのでgithubの情報を参考に古いバージョンをインストール。
上のリンクのコマンドを実行してインストールした後に、ディレクトリが足りなかったりするので追加で作成した。
sudo mkdir -p /usr/local/etc sudo chown "$(whoami)":admin /usr/local/etc sudo mkdir -p /usr/local/var/homebrew/locks sudo chown -R "$(whoami)":admin /usr/local/var/homebrew sudo chown -R "$(whoami)":admin \ /usr/local/bin \ /usr/local/include \ /usr/local/lib/pkgconfig \ /usr/local/share chmod -R u+w \ /usr/local/bin \ /usr/local/include \ /usr/local/lib/pkgconfig \ /usr/local/share sudo mkdir -p \ /usr/local/Cellar \ /usr/local/opt \ /usr/local/Caskroom \ /usr/local/Frameworks sudo chown -R "$(whoami)":admin \ /usr/local/Cellar \ /usr/local/opt \ /usr/local/Caskroom \ /usr/local/Frameworks
こんな感じで手動でディレクトリを作成して所有権を変更。
brew install pkgconf pcsc-lite cmake git
必要なパッケージをインストール。古いのでビルドされるため時間がかかる。
MacだとICカード読み込みの部分がPCSC Frameworkが使われてしまうので、coaxのICカードリーダー機能を使うにはソケット通信に対応したpcsc-liteを使う必要がある。
外付けカードリーダを使う場合はcmakeだけpipとかからインストールしてやればlibarib25はビルドできるんだけど今回はtorneだけで見れるようにするためにpcsc-liteを使ってみようかと…
git clone https://github.com/stz2012/libarib25.git cd libarib25mkdir build && cd buildsed -i '' '1i\ #ifndef LPTSTR\ typedef char *LPTSTR;\ typedef const char *LPCTSTR;\ #endif\ ' src/b_cas_card.c
cmake .. \ -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ -DWITH_PCSC_PACKAGE=libpcsclite \ -DCMAKE_PREFIX_PATH=/usr/local/opt/pcsc-lite \ -DCMAKE_LIBRARY_PATH=/usr/local/opt/pcsc-lite/lib \ -DCMAKE_SHARED_LINKER_FLAGS="-L/usr/local/opt/pcsc-lite/lib"
sed -i '' 's/-lpcsclite/-L\/usr\/local\/opt\/pcsc-lite\/lib -lpcsclite/' \ CMakeFiles/arib25-shared.dir/link.txt
make
otool -L ./b25
をして
./b25:
/usr/local/opt/pcsc-lite/lib/libpcsclite.1.dylib (compatibility version 1.0.0, current version 1.0.0)
@rpath/libarib25.0.dylib (compatibility version 0.0.0, current version 0.2.5)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1351.0.0)ってなってればpcsc-liteがうまくリンクされているのでOKなのでインストールする。
sudo make installsudo install_name_tool -add_rpath /usr/local/lib /usr/local/bin/b25sudo ln -s /usr/local/opt/pcsc-lite/lib/libpcsclite_real.1.dylib \ /usr/local/lib/libpcsclite_real.so.1
あとはcoaxのディレクトリに戻って
./coax pcsc
これを実行するとソケットのアドレスが出るのでPCSCLITE_CSOCK_NAME=のところからコピーしておく。コピーしたらCtrl+Cで一旦終了
export PCSCLITE_CSOCK_NAME=/var/folders/xx/xxxxxxxxxxxxx/T/coaxd/pcscd.comm
./coax tune --pcsc --ch 17 | b25 - - > output.ts
のように先ほどコピーしたPCSCLITE_CSOCK_NAMEから始まる部分をコマンドより前に実行してやる。そうするとBCASカードでB25デコードしながらTSファイルに録画されるはず。(TS抜き)
チャンネルはスキャンのときに出てきたチャンネルを適当に入れた。
このコマンドを実行したままVLCプレーヤーでoutput.tsを開くとテレビが視聴できる。チャンネル切り替えが面倒だけど…
あとこの状態だとoutput.tsに録画もされてるのでどんどんファイルサイズが大きくなってくのでちゃんとVLCにパイプでつなげて見られるようにしたい。
その代わり一時停止とか巻き戻しはできるけども…
ちょっと面倒だけどこれでMacでも地デジを見れるようになった。多分brewが普通に使える新しいMacだともっと簡単にできるかも。ZeroWaveにTVTestみたいなCasProcessorプラグインとか出たらもっと簡単にMacでテレビが見れるんだけどなぁ。