TVTestからMirakurunを利用する為のBonDriverです。
ソースコードのベースはBonDriver_HTTPからです。
Visual Studio 2022 (v143ツールセット) でビルドしています。x64/Win32いずれの構成もビルド可能ですが、
4K/8K(MMT/TLV)対応はx64ビルドのみです(詳細は後述)。
[Microsoft Visual C++ 2015-2022 Redistributable]を必要とします
Microsoft公式よりランタイムのダウンロードおよびインストールを行ってください
https://support.microsoft.com/ja-jp/help/2977003/the-latest-supported-visual-c-downloads
Mirakurun-BS4KのようにBS4K等のMMT/TLVチャンネルを
配信するMirakurunフォークに対しても、通常のGR/BS/CSと同じチューナー・同じチャンネル一覧の中から
シームレスに視聴できます。裏側ではdantto4k(MMTS保存対応フォーク)のMMT/TLVデマルチプレクサ・
ACAS復号・MPEG2-TSリマルチプレクサのコードをgit submodule(thirdparty/dantto4k)として取り込み、
ビルド時に本体へ静的リンクしています(別プロセスやサブプロセスは使いません)。
Mirakurunの/api/channelsまたは/api/servicesが返すチャンネルのtypeがMMT_TYPES(既定BS4K)に
一致する場合のみ、内部でMMT/TLV→MPEG2-TS変換を行います。それ以外のチャンネル(GR/BS/CSなど)は
今まで通り生のTSをそのまま返します。
git submodule update --init --recursive
でdantto4k本体とその依存(asio、tsduck)を取得してからビルドしてください。初回ビルド時にTSDuckの
静的ライブラリ(thirdparty/dantto4k/thirdparty/tsduck)を自動的にビルドします(10分程度)。
この機能はx64ビルドのみ対応です(TSDuckの静的ライブラリをx64向けにしかビルドしていないため)。 Win32(x86)ビルドではMMT/TLV変換は無効になり、従来通りGR/BS/CS等のTS配信のみ利用できます。
既定では受信したstreamを復号済みとみなし、カードリーダーには一切アクセスしません
(winscard.dllの読み込みも行いません)。暗号化されたままの4K/8Kチャンネルを受信・録画する場合は、
iniの[MMT4K]セクションでUSE_SMARTCARD=1とし、ローカルのB-CASカードリーダーまたはリモートの
CasProxyServerを用意してください。同セクションの
SMARTCARD_READER_NAME/CASPROXY_SERVER/CUSTOM_WINSCARD_DLLで接続先を指定できます。
USE_SMARTCARD=0のまま暗号化されたstreamを受けると、鍵を待たずに復号済みとして扱うため映像が乱れます。
dantto4kと同じStartMmtsRecording/StopMmtsRecording/
GetMmtsRecordingStatusをエクスポートしています。EDCBで
Write_MMTSプラグインを使うと、MMT/TLV(4K/8K)チャンネルを
MPEG2-TSに変換せず、受信channelのstreamをACASデスクランブル解除のみ行った状態で.mmts(+索引用の
.mmtsmap)としてそのまま保存できます。
dantto4kと違い本DLLはGR/BS/CS等の通常のTSチャンネルも同じDLLで扱うため、上記に加えて
IsMmtsRecordingAvailableをエクスポートし、「MMT/TLVチャンネルを選局中か」を
Write_MMTS側に伝えます。MMT/TLV以外のチャンネルではこれがFALSEになり、Write_MMTSは
通常の.ts保存にフォールバックします。録画中(AddTSBuffの中)からも呼ばれるため、
選局処理のロックは取らずatomicな値を返すだけにしています。MMT/TLVチャンネル間で選局し直した
場合にFALSEになるのはCloseTunerの実行中だけなので、録画中の再選局で誤検出することはありません。
この判定を持たない
Write_MMTSの古い版と組み合わせると、地上波等の
録画でもTSが書かれず0バイトの.mmtsだけが残るため、Write_MMTSも併せて更新してください。
This software is released under the MIT License, see LICENSE.