Mahiron

created at
updated at
technology DTV

GitHub - rokoucha/Mahiron: Yet another DVR Tuner Server for Japanese TV · GitHub

/api/assets/7c3c48ab3bbe01250c05db1fd1ca48bcff732487.png
Goで書かれた日本のデジタル放送向けチューナーサーバー

もともとは Chinachu/Mirakurun のフォークだったが、Goで1から書き直した。古い方は 21S1298001/Mahiron
Mirakurunの開発があまり活発ではなかったタイミングでメンテナンスの為にフォークしていたが、内部構造が複雑だったりであまり触れなくなってアーカイブしていた。

個人的により良いチューナーサーバーはどうあるべきかというのを考えていて、GoでPoCを作りつつ、それをベースにして細々と作っていたのがMahiron 5。JS版Mahironが4.xだったので刷新して新しくなったというのと、Goで書かれているのの語呂合わせでMahiron 5にした。

チューナー効率の良さと開発のしやすさを重視し、一般的なWebサーバーのスタックに寄せつつ、チューナー周りは重厚なパイプラインで様々なユースケースに対応できるような作りにしてある。
今時はみんなコンテナで動かすので、コンテナネイティブな設計を意識している。
またOpenTelemetryに対応しているので、安定稼動やデバッグもしやすくなっている。

基本的にはMirakurun互換だが、一部で非互換な部分がある。また内部構造が全く違うので、細かい部分で非互換があるかもしれない。とりあえず自分で使っている分は困ってはいないぐらいの互換レベルではある。

折角1から作るならという事でおもしろ機能を実装している。
データ放送APIがその1つで、データ放送に必要なデータをSSE+REST APIで取ってこれるという物。
TSの処理を内部に持っているので、そこでデータカルーセルをパースしていい感じに流している。
キャッシュとかできたら高速に開けておもしろいかなーと思って、誰も使ってないけど細々とブラッシュアップをしている。
他にも我が家はケーブルテレビが導入されているので、トランスモジュレーションで送信される放送波と通常の放送波をいい感じに混ぜられるような仕組みを入れてみたり、ダッシュボードあったら便利だよねという事で用意したりしている。

既存のチューナーサーバーである Chinachu/Mirakurunmirakc/mirakc とは一味違う、新進気鋭の新入りをよろしくお願いします。