Home

Awesome

<img width="350" src="https://user-images.githubusercontent.com/39271166/134050201-8110f076-a939-4b62-8c86-7beaa3d4728c.png" alt="KonomiTV"> <!-- omit in toc -->

<img width="100%" src="https://user-images.githubusercontent.com/39271166/153729504-2c047f35-c788-49d2-a088-cc1c3bab3fd0.png"><br>

いろいろな場所とデバイスでテレビと録画を快適に見れる、モダンな Web ベースのソフトウェアです。

ユーザーのさまざまな好みがつまった、温かみのある居心地の良い場を作ってみたいという想いから、KonomiTV と名付けました。
手元の PC・タブレット・スマホをテレビにすることを考えたときに、まったく新しく、使いやすくて快適な視聴体験を創出したいという想いから開発しています。

計画はかなり壮大ですが、現時点ではテレビをリアルタイムで視聴できる「テレビをみる」と、設定画面のみが実装されています。
将来的には、録画した番組を Netflix をはじめとした配信サイトのような UX で快適に視聴できる「ビデオをみる」など、多くの機能を追加予定です。

目次 <!-- omit in toc -->

設計思想

いわゆる TS 抜きでテレビを見ている人の多くが、TVTest でテレビを見て、録画をファイルベースで管理して、録画ファイルをメディアプレイヤーで開いて…といった、ファイルやアーキテクチャベースの視聴の仕方をされているかと思います。
ですが、その中で必ず出てくる BonDriver を選択したり、ファイルをフォルダの中から探しだして選択したり、1話を見終わったから2話を開き直したりといった手間は、本来その番組を視聴し、心いくまで楽しむにあたって、不要な工程ではないかと考えます。雑念、といったほうが分かりやすいでしょうか。

一方世間のトレンドに目を向けてみると、Netflix や Amazon Prime Video のような配信サイトが幅を利かせています。
これらのサイトが流行っているのは、(良い意味で)何も考えなくても、いつでもどこでも気軽に快適に映像コンテンツを見まくれる、そんなユーザー体験が実現されているからです。
配信サイトとテレビ・録画は「リアルタイムで配信されている」「事前に選んだコンテンツしか視聴できない」など大きな差異もありますが、映像コンテンツを視聴するインターフェイスという点では共通しています。
そこで、テレビと録画の視聴といういまだレガシーな視聴体験が残っている分野に、優れた UX を実現している配信サイトでの概念を取り入れ、まるで自分だけの Netflix のような視聴体験を演出できれば面白いのではないか?と考えました。その仮説と理想を実現すべく、鋭意開発を続けています。

こうした考えから、設計思想として「映像コンテンツを視聴し楽しむ」ために不要な概念や操作を可能なかぎり表層から排除・隠蔽し、ユーザーが本当の目的以外の雑念に気を取られないようなシステムを目指しています。

たとえば TVRemotePlus であった「ストリーム」の概念を KonomiTV では排しています。チャンネルをクリックするだけですぐに視聴できるほか、裏側ではチューナーの共有、同じチャンネルを複数のデバイスで見ているなら自動的に共聴するといった高度な仕組みも備え、ユーザーがストレスなく視聴できるように設計されています。
画質の切り替えの UI も、KonomiTV では多くの動画サイトと同じようにプレイヤー内に統合されています。裏側では毎回エンコーダーを再起動しているのですが、表層からはあたかも事前に複数の画質が用意されているかのように見えるはずです。
一般的な PC で動かす以上使えるリソースには限界がありますし、全てにおいて Netflix のような機能を実装できるわけではありません。それでも使えるリソースの範囲で最大限使いやすいソフトウェアにしていければと、細部に様々な工夫を取り入れています。

当然ながら表に泥臭い処理を見せないようにしている分、裏側の実装がそれなりに大変です。細かいところまで調整しているとかなりの手間がかかります。
それでも私が頑張れば私を含めたユーザーの視聴体験が向上するわけで、必要な犠牲かなと思っています。

<img width="100%" src="https://user-images.githubusercontent.com/39271166/153731898-c9743df8-794b-4498-ac25-017662f38759.png"><br>

動作環境

サーバー

クライアント

備考・注意事項

<img width="100%" src="https://user-images.githubusercontent.com/39271166/153729029-bbcd6c16-9661-4f61-b7a9-64df8c1e4586.png"><br>

事前準備

チューナーのドライバーを px4_drv に変更する

必須ではありませんが、Windows で PLEX 製チューナーを利用している場合は、事前にドライバーを px4_drv for WinUSB に変更しておくことを強く推奨します。
px4_drv では、公式ドライバーとの比較で、チューナーの起動時間が大幅に短縮されています。
その分 KonomiTV での視聴までにかかる待機時間も速くなるため(5秒以上速くなる)、より快適に使えます。

px4_drv を導入すると、ほかにもドロップが大幅に減って安定するなど、たくさんのメリットがあります!
内蔵カードリーダーが使えないこと、BonDriver の差し替えが必要になることだけ注意してください。

[!NOTE]
px4_drv for WinUSB のビルド済みアーカイブは tsukumijima/DTV-Builds にて配布しています。

EDCB の事前設定

<img width="613" src="https://user-images.githubusercontent.com/39271166/201383288-7bcda592-bffd-4a15-b975-ced2b66e4289.png"><br>

EDCB バックエンドでは、いくつか EDCB に事前の設定が必要です。
<ins>この事前設定を行わないと KonomiTV は正常に動作しません。</ins> 必ず下記のとおりに設定してください。

また、必ず 220122 以降のバージョンの xtne6f 版 EDCB / tkntrec 版 EDCB を利用していることを確認してください。
現在利用している EDCB のバージョンは、EpgTimer の設定ウインドウの下に表示されています。KonomiTV でサポートしていない古い EDCB では、このバージョン表示自体がありません。

[!NOTE]
230922 以降の xtne6f 版 / tkntrec 版 EDCB に更新すると EpgDataCap_Bon の起動が少し高速化され、KonomiTV でより快適にチャンネルを切り替えられるようになります。

[動作環境] に記載のとおり、<ins>220122 以前や「人柱版10.66」などの古いバージョンをお使いの場合は、EDCB のアップグレードが必要になります。</ins>
最新版の EDCB のビルド済みアーカイブは tsukumijima/DTV-Builds にて配布しています。
特にこだわりがなければ、このビルド済みアーカイブで事前に EDCB を最新版にアップグレードしておいてください。


<img width="664" src="https://user-images.githubusercontent.com/39271166/201383475-7d5f6077-fb9a-452d-87a0-38c448a5e744.png"><br>

EpgTimer を開き、[設定] → [動作設定] → [全般] から、[EpgTimerSrv の設定画面を開く] をクリックして、EpgTimerSrv の設定画面を開きます。
さらに [その他] タブに切り替え、以下のとおりに設定してください。


<img width="570" src="https://user-images.githubusercontent.com/39271166/201386157-451f84cb-38a2-44dd-b8e7-4c2b461c90ed.png"><br>

また、EpgDataCap_Bon にも設定が必要です。
EpgDataCap_Bon を開き、[設定] → [ネットワーク設定] → [TCP送信] から、[SrvPipe] を選択して [追加] ボタンをクリックしてください。 送信先一覧に 0.0.0.1:0-29 (SrvPipe) と表示されていれば OK です。

[!NOTE]
SrvPipe とは、EpgDataCap_Bon で受信した放送波を EpgTimerSrv (EpgTimer Service) に渡すための、EDCB 固有の特殊な名前付きパイプのことです。
KonomiTV は SrvPipe を経由して EDCB から放送波を受信しているため、この設定を忘れると、テレビのライブストリーミングができません。

[!NOTE]
必須ではありませんが、この機会に [設定] → [動作設定] → [全サービスを処理対象とする] のチェックを外しておくことを推奨します。

このほか、リモート PC の KonomiTV から EDCB にアクセスする場合は、EpgTimerSrv.exe にファイアウォールが掛かっていると接続に失敗します。
適宜ファイアウォールの設定を変更し、EDCB に接続できるようにしておいてください。

QSVEncC・NVEncC・VCEEncC・rkmppenc に対応した GPU ドライバーのインストール

KonomiTV は、QSVEncC (Intel QSV)・NVEncC (NVIDIA NVENC)・VCEEncC (AMD VCE)・rkmppenc (Rockchip ARM SoC) の4つのハードウェアエンコーダーに標準で対応しています。

[!IMPORTANT]
FFmpeg (ソフトウェアエンコーダー) は遅い上に CPU 負荷がかなり高くなるため、ハードウェアエンコーダーの利用を強くおすすめします。
FFmpeg での積極的な動作確認は行われていません。

Windows

それぞれのハードウェアエンコーダーを使用するには、対応した GPU ドライバーのインストールが必要です。
基本的にすでにインストールされていると思います。

[!NOTE]
古いドライバーを使用している場合は、この機会に最新のドライバーにアップデートしておくことをおすすめします。ドライバーが古すぎると、ハードウェアエンコードに失敗する場合があります。

Linux

QSVEncC では、別途 Intel Media Driver のインストールが必要です。

[!WARNING]
Linux 版の Intel QSV は、Broadwell (第5世代) 以上の Intel CPU でのみ利用できます。
そのため、Haswell (第4世代) 以下の CPU では、Intel Media Driver のインストール有無にかかわらず、QSVEncC を利用できません。
なお、Windows 版の Intel QSV は、Haswell (第4世代) 以下の CPU でも利用できます。


# Ubuntu 22.04 LTS
curl -fsSL https://repositories.intel.com/gpu/intel-graphics.key | sudo gpg --dearmor --yes -o /usr/share/keyrings/intel-graphics-keyring.gpg
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/intel-graphics-keyring.gpg] https://repositories.intel.com/gpu/ubuntu jammy client' | sudo tee /etc/apt/sources.list.d/intel-graphics.list > /dev/null
# Ubuntu 20.04 LTS (対応する GPG 鍵のダウンロード URL が微妙に異なる)
curl -fsSL https://repositories.intel.com/graphics/intel-graphics.key | sudo gpg --dearmor --yes -o /usr/share/keyrings/intel-graphics-keyring.gpg
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/intel-graphics-keyring.gpg] https://repositories.intel.com/gpu/ubuntu focal client' | sudo tee /etc/apt/sources.list.d/intel-graphics.list > /dev/null

sudo apt update && sudo apt install -y intel-media-va-driver-non-free intel-opencl-icd libmfxgen1

以上のコマンドを実行して、Intel Media Driver をインストールしてください (Ubuntu 20.04 LTS 以降向け) 。

[!NOTE]
Docker を使ってインストールする場合は、Intel Media Driver をインストールしなくても動作します(未検証)。
KonomiTV の Docker イメージ には Intel Media Driver が標準でインストールされているほか、Intel Graphics 本体のドライバは Linux カーネルに取り込まれているためです。

[!NOTE]
以前 Alder Lake (第12世代) 以降の Intel CPU で必要だった libmfx-gen1.2 は、QSVEncC 7.38 以降で libmfxgen1 に置き換えられました。
libmfxgen1 は、Ubuntu 20.04 LTS 以降で利用できます。

[!WARNING]
Jasper Lake 世代などの一部の CPU や Arc GPU では、別途 HuC ファームウェアのロードを有効にする必要があります。
HuC ファームウェアのロードを有効にするには、/etc/modprobe.d/i915.conf にカーネルパラメーターとして options i915 enable_guc=2 を追記し、システムを再起動してください。
詳細は QSVEncC のドキュメント を確認してください。


NVEncC では、NVIDIA Graphics Driver のインストールが必要です。
基本的にはすでにインストールされていると思います。個人的には ubuntu-drivers コマンドを使って apt でインストールするのがおすすめです。

Docker を使って KonomiTV をインストールする場合は (後述) 、さらに NVIDIA Container Toolkit のインストールが必要です。

# Ubuntu では nvidia-docker2 パッケージをインストールするだけ
sudo apt install -y nvidia-docker2

VCEEncC では、AMDGPU-PRO Driver のインストールが必要です。
古いドライバーがインストールされていると、VCEEncC を利用できないことがあります。最新のドライバーをインストールしてください。

[!WARNING]
VCEEncC を使うには AMDGPU-PRO ドライバーが必要です。
オープンソース版の AMDGPU ドライバーには AMD AMF (Advanced Media Framework) が含まれていないため、VCEEncC を利用できません。

# Ubuntu 20.04 LTS (2024/09時点で最新の amdgpu-install パッケージの URL)
curl -LO https://repo.radeon.com/amdgpu-install/23.40.3/ubuntu/focal/amdgpu-install_6.0.60003-1_all.deb
# Ubuntu 22.04 LTS (2024/09時点で最新の amdgpu-install パッケージの URL)
curl -LO https://repo.radeon.com/amdgpu-install/23.40.3/ubuntu/jammy/amdgpu-install_6.0.60003-1_all.deb

# AMDGPU-PRO Driver のインストール
sudo apt install -y ./amdgpu-install_6.0.60003-1_all.deb
sudo apt update && sudo amdgpu-install -y --accept-eula --usecase=graphics,amf,opencl --opencl=rocr,legacy --no-32

# 再起動
sudo reboot

以上のコマンドを実行して、AMDGPU-PRO Driver をインストールしてください (Ubuntu 20.04 LTS 以降向け) 。


rkmppenc のサポートは試験的なものです。また、Rockchip 製 ARM SoC (RK3588/RK3588S など) でのみ利用できます。

# Mali GPU Driver のインストール (RK3588/RK3588S 向け)
## 他の Rockchip SoC の Mali GPU Driver は https://github.com/tsukumijima/libmali-rockchip/releases から入手できる
## RK3588/RK3588S の場合、g610-g6p0 より g610-g13p0 の方が高速に動作する
wget https://github.com/tsukumijima/libmali-rockchip/releases/download/v1.9-1-55611b0/libmali-valhall-g610-g13p0-wayland-gbm_1.9-1_arm64.deb
sudo apt install -y ./libmali-valhall-g610-g13p0-wayland-gbm_1.9-1_arm64.deb
rm libmali-valhall-g610-g13p0-wayland-gbm_1.9-1_arm64.deb

# rockchip-multimedia-config のインストール
## Rockchip のハードウェアエンコーダーを有効化するための設定パッケージ
wget https://github.com/tsukumijima/rockchip-multimedia-config/releases/download/v1.0.2-1/rockchip-multimedia-config_1.0.2-1_all.deb
sudo apt install -y ./rockchip-multimedia-config_1.0.2-1_all.deb
rm rockchip-multimedia-config_1.0.2-1_all.deb

# 念のため再起動
sudo reboot

以上のコマンドを実行して、Mali GPU Driver と、Rockchip のハードウェアエンコーダーを有効化するための設定パッケージをインストールしてください (Ubuntu 20.04 LTS / Debian 11 Bullseye 以降向け) 。

Tailscale の導入

<img width="100%" src="https://user-images.githubusercontent.com/39271166/201439632-d78b8401-ef70-4955-98e8-b317ecf3e278.png"><br>

KonomiTV で外出先からリモート視聴するには、Tailscale というメッシュ VPN ソフトを、サーバー PC とクライアントデバイス双方にインストールしておく必要があります。

[!NOTE]
KonomiTV を家の中だけで使う分には必須ではありませんが、セットアップがとっても簡単で時間もそこまでかからないので、この機会にインストールしておくことをおすすめします。

[!NOTE]
厳密にはほかの方法 (OpenVPN・SoftEther・リバースプロキシなど) でもリモート視聴は可能ですが、技術的に難易度がかなり高くネットワークエンジニア以外には難しいこと、Tailscale を使った方法が一番手軽でセキュアなことから、<ins>KonomiTV では Tailscale を使ったリモート視聴方法のみ公式にサポートしています。</ins>
特にリバースプロキシ経由でのアクセスでは<ins>一部機能が正常に動作しなくなる</ins>ほか、セキュリティ上の問題もあるため、非推奨です。

Tailscale は、デバイスが接続されているネットワークや物理的距離に関係なく、同じアカウントにログインしている Tailscale クライアント (デバイス) 同士で直接通信できる、次世代型のメッシュ VPN です。

VPN サーバーを介さず Tailscale クライアント同士で直接通信するため、通常の VPN よりも高速です。さらに通信は暗号化されるため、セキュアに外出先から自宅のデバイスへアクセスできます。

さらに、デバイスをほかの Tailscale ユーザーとシェアすることもできます。
Google ドライブでファイルへの招待リンクを作って共同編集したい人に送るのと同じ要領で、Tailscale クライアントをインストールしたデバイスをほかのユーザーとシェアできます。
KonomiTV を共有したい家族や親戚に Tailscale アカウントを作成してもらえば、Tailscale ログイン用の Google / Microsoft / GitHub アカウントを家族間で共有することなく、セキュアに KonomiTV をシェアできます。

Tailscale の詳細や導入方法は、以前私が執筆した こちら の記事をご覧ください。
この記事のとおりにセットアップすれば、あとは各デバイスで Tailscale での VPN 接続をオンにしておくだけです。

KonomiTV での利用以外にも、EDCB Material WebUI や EPGStation などの、プライベートネットワーク上の Web サーバーに家の外からアクセスするときにとても便利なサービスです。
100台までは無料ですし (逸般の誤家庭でなければ十分すぎる)、この機会に導入しておくことをおすすめします。

<img width="100%" src="https://user-images.githubusercontent.com/39271166/201460497-7f0b951a-5495-40cd-95af-32cc2146d991.png"><br>

サーバーのインストール/アップデート

KonomiTV には、インストーラー/アップデーター/アンインストーラーの3つのモードを内包した、CLI ベースのインストーラーがあります。
このインストーラーを使えば、とてもかんたんに KonomiTV をインストール/アップデートできます!

インストール時は、KonomiTV のインストーラーを起動したあと、最初の質問で 1 を入力します。
あとは、インストーラーの通りに進めていくだけで、自動的にインストールが開始されます!詳しくは下記のインストール手順をご覧ください。

アップデート/アンインストール時は、KonomiTV のインストーラーを起動したあと、最初の質問でアップデートでは 2 、アンインストールでは 3 を入力します。
その後、KonomiTV がインストールされているフォルダを入力すると、自動的にアップデート/アンインストールが開始されます!

[!NOTE]
インストール/アップデートにはインターネット接続が必要です。オフラインインストーラーではないため注意してください。

[!WARNING]
KonomiTV サーバーは特殊な仕組みで動作しているため、通常のアプリと異なり Windows の「設定」や「プログラムと機能」からアンインストールすることはできません。
アンインストールする際は、必ず KonomiTV のインストーラー (アンインストーラーモード) を使ってアンインストールしてください。
インストーラーには後方互換性があるため、インストールされているバージョンより新しいバージョンのインストーラーを使ってアンインストールすることもできます。

以下はインストール時の手順になります。
アップデート/アンインストールする際は適宜読み替えてください。

[!WARNING]
KonomiTV は鋭意開発中のため、現在破壊的な構成変更が頻繁に行われています。
破壊的変更が続く中アップデーターの機能を維持することは難しいため、安定版リリースまでの当面の間、アップデーターは最低限のメンテナンスのみ行っています。
お手数をおかけしますが、0.7.1 以前から 0.8.0 以降へのアップデートは、適宜データベース (server/data/database.sqlite) や設定ファイル (config.yaml) などをバックアップの上で一旦アンインストールし、新規でインストールし直すことを強くおすすめします。
0.8.0 から 0.9.0 以降へのアップデートは動作する可能性がありますが、0.7.1 以前からのアップデートでは大幅な構成変更が入っているため、確実に動作しません。
なお、0.7.1 のアンインストールには 0.7.1 のインストーラーが必要です。0.8.0 以降のインストーラーではアンインストールに失敗するため注意してください。

[!NOTE]
インストーラーを実行する前に、当該バージョンの リリースノート を一読しておくことを強く推奨します。
各バージョンごとのインストール時の注意点なども、すべてリリースノートに記載されています。

Windows

[動作環境] に記載のとおり、Windows 10 以降の 64bit OS にのみ対応しています。
Windows 8 以前と、32bit OS には対応していません。

Releases ページから、最新の KonomiTV のインストーラーをダウンロードします。
Assets の下にある KonomiTV-Installer.exe をダウンロードしてください。

[!NOTE]
KonomiTV-Installer.exe がウイルス対策ソフトにウイルスと扱われてしまうことがありますが、誤検知です。一般に Python 製ソフトを exe 化すると問答無用でウイルスだと扱われてしまうことが多く、頭を抱えています…。
適宜お使いのウイルス対策ソフトで、KonomiTV-Installer.exe を許可してください。KonomiTV のインストーラーのソースコードは こちら で公開しています。

<img width="100%" src="https://user-images.githubusercontent.com/39271166/201462168-f898fe8f-ac1f-4942-908f-de6263389a97.png"><br>

ダウンロードが終わったら、KonomiTV-Installer.exe をダブルクリックで実行します。
インストールには管理者権限が必要です。

あとは、インストーラーの通りに必要事項を入力していけば、インストールがはじまります!
スペックにもよりますが、インストールには少し時間がかかります。気長に待ちましょう。

インストール処理の終盤で、KonomiTV の実行ユーザー名と、パスワードの入力を求められます。

これは KonomiTV の Windows サービスを一般ユーザーの権限で起動するために利用するものです。入力されたユーザー名やパスワードがそれ以外の用途に利用されることはありません。 実行ユーザー名を入力せずに Enter キーを押すと、デフォルトで現在ログオン中のユーザーが利用されます。
なお、PIN などのほかの認証方法には対応していません。必ず通常のパスワードを入力してください。

KonomiTV の Windows サービスを一般ユーザーの権限で起動することで、KonomiTV からユーザーのネットワークドライブにアクセスできるようになります。

[!WARNING]
KonomiTV の Windows サービスは、PC の起動後数分遅れてから起動します。 PC の起動直後は EDCB や Mirakurun の Windows サービスがまだ起動していないためです。

[!IMPORTANT]
指定したユーザーにパスワードを設定していない場合は、簡単なものでいいので何かパスワードを設定してから、その設定したパスワードを入力してください。
なお、パスワードの設定後にインストーラーを起動し直す必要はありません。 また、Active Directory 導入環境や Windows Server ではログオンに失敗する場合がありますが、環境がないためサポートは行っていません。

[!IMPORTANT]
ごく稀に、正しいパスワードを指定したにも関わらず、ログオンできない場合があります。その場合は、一度インストーラーを Ctrl+C で中断してください。
その後、インストーラーの実行ファイル (KonomiTV-Installer.exe) を Shift + 右クリック → [別のユーザーとして実行] をクリックして、ログオン中のユーザー名とパスワードを指定してから、再度インストーラーを実行してみてください。

[!IMPORTANT]
セキュリティソフトの誤作動により、インストール途中にエラーが発生し、インストールに失敗することがあります。
その場合は一時的にセキュリティソフトのリアルタイムスキャンをオフにしたり、インストール先のフォルダをスキャン対象から除外してから、再度インストーラーを実行してみてください。

Linux

[動作環境] に記載のとおり、Ubuntu 20.04 LTS / Debian 11 Bullseye 以降の OS にのみ対応しています。
それ以外のディストリビューションでも動くかもしれませんが、動作は保証しませんし、今後のサポート予定もありません (Docker ならどの OS でもそれなりに動くような気はします) 。

[!NOTE]
できるだけ Ubuntu の利用を推奨しますが、もし Ubuntu 以外の OS にインストールする際は、Docker でのインストールをおすすめします。

[!WARNING]
NVIDIA が KonomiTV で利用していたバージョンの CUDA Docker イメージを削除した影響で (詳細1 / 詳細2) 、0.7.1 以前では Docker を使ったインストール方法が利用できなくなりました。
0.8.0 以降のバージョンでは CUDA Docker イメージの pull 先を NGC に変更しています。0.8.0 以降へのアップデートをお願いします。

Linux 向けの KonomiTV には、通常のインストール方法と、Docker を使ったインストール方法の 2 通りがあります。

通常のインストール方法では、事前に PM2Node.js (PM2 の動作に必要) のインストールが必要です。
MirakurunEPGStation を Docker を使わずにインストールしているなら、すでにインストールされているはずです。
また、インストーラーの実行時に lshw コマンドが必要です。lshw がインストールされていない場合は、適宜インストールしてください。

Docker を使ったインストール方法では、事前に DockerDocker Compose のインストールが必要です。
Docker Compose は V1 と V2 の両方に対応していますが、できれば V2 (ハイフンなしの docker compose コマンド) が使えるようにしておくことをおすすめします。
なお、Ubuntu 公式 apt リポジトリの Docker / Docker Compose は古いバージョンで固定されているため、必ず Docker 公式 apt リポジトリからインストール・アップデートを行うようにしてください。 古い Docker / Docker Compose では正常に動作しません。

[!WARNING]
ARM デバイスでは、対応コストの観点から Docker を使ったインストール方法はサポートされていません。

[!WARNING]
Docker Compose V1 は最終版の 1.29.2 でのみ動作を確認しています。古いバージョンでは正常に動作しない可能性が高いです。
もし Docker Compose V1 が 1.29.2 よりも古い場合は、この機会に V2 への更新をおすすめします。以前よりもグラフィカルに進捗が表示されたりなどのメリットもあります。

[!WARNING]
QSVEncC・NVEncC・VCEEncC・rkmppenc に対応した GPU ドライバーのインストール に記載のとおり、NVIDIA GPU が搭載されている PC に Docker を使ってインストールする場合は、必ず事前に NVIDIA Container Toolkit をインストールしておいてください。
NVIDIA Container Toolkit がインストールされていない場合、KonomiTV のインストールにも失敗する可能性が高いです。

[!NOTE]
Docker を使ってインストールする場合、動作環境によっては getaddrinfo EAI_AGAIN registry.yarnpkg.com といったエラーで Docker イメージのビルドに失敗することがあります。
Docker の DNS 設定がおかしかったり、Docker が書き換える iptables の定義が壊れてしまっていることが原因のようで、解決方法は千差万別です。
また、KonomiTV の Docker Compose 構成では都合上 network_mode: host を使っていますが、これによりほかの環境と衝突している可能性もあります。 KonomiTV は通常のインストール方法でも極力環境を汚さないように開発されています。Docker を使わずに通常通りインストールしたほうが手っ取り早いかもしれません。
参考: https://e-tipsmemo.hatenablog.com/entry/2024/04/07/000000

<img width="100%" src="https://user-images.githubusercontent.com/39271166/201463450-96bb686e-c5bb-493d-b907-57b5f51ac986.png"><br>

curl -LO https://github.com/tsukumijima/KonomiTV/releases/download/v0.11.0/KonomiTV-Installer.elf
chmod a+x KonomiTV-Installer.elf
./KonomiTV-Installer.elf

以上のコマンドを実行して KonomiTV-Installer.elf を実行し、インストーラーの通りに進めてください。
インストールには root 権限が必要です。KonomiTV-Installer.elf の実行時に自動的にパスワードを求められます。

[!NOTE]
ARM デバイスでは、KonomiTV-Installer.elf の代わりに KonomiTV-Installer-ARM.elf をダウンロードしてください。

KonomiTV にアクセスする

<img width="100%" src="https://user-images.githubusercontent.com/39271166/201465324-fdae7d03-ba1f-4aa4-9d48-7e04f2290bc7.png"><br>

「インストールが完了しました! すぐに使いはじめられます!」と表示されたら、KonomiTV サーバーのインストールは完了です!おつかれさまでした!!🎉🎊
インストーラーに記載されている URL から、KonomiTV の Web UI にアクセスしてみましょう!

通常、(イーサネット) または (Wi-Fi) の URL が家の中からアクセスするときの URL 、(Tailscale) の URL が外出先(家の外)から Tailscale 経由でアクセスするときの URL になります。

[!NOTE]
https://my.local.konomi.tv:7000/ の URL は、KonomiTV サーバーをインストールした PC 自身を指す URL (ループバックアドレス) です。基本的に使うことはないと思います。

[!NOTE]
(Tailscale) の URL は、事前に Tailscale を導入していない場合は表示されません(外出先からのアクセス自体は、Tailscale をいつ導入したかに関わらず、Tailscale が起動していれば問題なく行えます)。

KonomiTV サーバーは Windows サービス (Windows) / PM2 サービス (Linux) / Docker サービス (Linux-Docker) としてインストールされているので、サーバー PC を再起動したあとも自動的に起動します。
もし再起動後に KonomiTV にアクセスできない場合は、server/logs/KonomiTV-Server.log に出力されているエラーメッセージを確認してください。

[!TIP]
ぜひこの機会に KonomiTV の公式 Twitter をフォローしていただけると嬉しいです!
KonomiTV の開発進捗やユーザーのみなさんへのお知らせなどを随時ツイートしています。
各種 Tips もツイートしていますので、もし導入時に分からない箇所があれば、一度ツイートを検索してみると解決策が見つかるかもしれません。

Twitter

デスクトップアプリ・スマホアプリとして使う

<img width="100%" src="https://user-images.githubusercontent.com/39271166/201473243-e246802f-0100-4e6a-bb0e-4247f784bb3b.png"><br>

PC 版 Chrome や Edge では、URL バー右のアイコン → [アプリをインストール] から、KonomiTV をブラウザバーのないデスクトップアプリとしてインストールできます!
ブラウザバーが表示されない分、より映像に没頭できますし、画面も広く使えます。私も KonomiTV をデスクトップアプリとして使っています。
タスクバーや Dock に登録しておけば、起動するのも簡単です。ぜひお試しください。

[!NOTE]
デスクトップアプリとしてインストールしない場合は、[サイトの設定] から自動再生を [許可する] にしておくと、テレビをスムーズに視聴できます。

<img width="100%" src="https://user-images.githubusercontent.com/39271166/201473798-97aa818a-0474-46bc-b56a-0c49f281e92a.jpg"><br>

Android Chrome では下に表示される [ホーム画面に追加] またはメニューの [アプリをインストール] から、iPhone / iPad Safari では共有メニュー → [ホーム画面に追加] から、それぞれ KonomiTV をブラウザバーのないスマホアプリとしてインストールできます!

スマホは画面が小さいので、アプリとしてインストールした方が画面が広くなって使いやすいです。私も KonomiTV をスマホアプリとして使っています。こちらもぜひお試しください。

[!WARNING]
現状、iPhone / iPad Safari で KonomiTV をスマホアプリとしてインストールすると、Safari のバグの影響で Picture-in-Picture ボタンが利用できなくなります。
とはいえ Picture-in-Picture を使わないのであれば、アプリとしてインストールした方が圧倒的に快適です。

[!NOTE]
PWA (Progressive Web Apps) という、Web アプリを通常のネイティブアプリのように使えるようにする技術を利用しています。将来的には、PWA だけでなく、より快適に利用できるようにした iOS 向けアプリと Android 向けアプリ (いわゆるガワアプリ) をリリースする予定です。

フィードバックのお願い

KonomiTV はまだまだ開発中のソフトウェアです。

機能が多岐に渡ることと、もとよりテレビのストリーミングという特殊で複雑な技術を扱っていることから、テストが追いつかず慢性的な検証不足に陥っています。
できるだけ手元の環境で検証やテストを行うようにはしていますが、すべての環境や条件を網羅できているわけではありませんし、不具合や問題が残っている可能性は十分にあります。

もし KonomiTV を使っていて、何か不具合や問題が発生した場合は、ぜひ Google フォーム からフィードバックをお願いします…!!
フィードバックしていただけると、KonomiTV の品質改善に大いに役立ちます!

[!NOTE]
できればマイナーな条件や機能の組み合わせで問題が出ないか、各自でテストしていただけるととても助かります…!
その際、フィードバックフォームには試した環境や条件などを詳細に記載していただけると、問題の再現性が高まります。

KonomiTV ではユーザビリティ (使いやすさ) を第一に考えて UI や細部の機能を緻密に設計しています。
「〇〇の機能/画面が使いづらい」といったフィードバックや、新しい機能のリクエストも大歓迎です。

みなさんからのフィードバックにすべて応えることはできませんが、いただいたフィードバックは KonomiTV の機能向上や改善に役立てさせていただきます!

<img width="100%" src="https://user-images.githubusercontent.com/39271166/153728655-afe25279-2d42-4150-bfdf-71de62dde44d.jpg"><br>

付録

https://aa-bb-cc-dd.local.konomi.tv:7000/ の URL について

この https://aa-bb-cc-dd.local.konomi.tv:7000/ のフォーマットの URL は、KonomiTV の WebUI に HTTPS でアクセスするための特殊な URL です。

aa-bb-cc-dd の部分には、ローカル IP アドレスのうち、. (ドット) を - (ハイフン) に置き換えた値が入ります。
つまり、サーバー PC のローカル IP アドレスが 192.168.1.11 だったとしたら、https://192-168-1-11.local.konomi.tv:7000/ という URL になります。

[!TIP] ループバックアドレス のみ、https://127-0-0-1.local.konomi.tv:7000/ の代わりに、
https://my.local.konomi.tv:7000/
https://local.local.konomi.tv:7000/
https://localhost.local.konomi.tv:7000/
のシンプルな URL でアクセスできます。

通常、自宅のローカル LAN 上の Web サイトには、http://192.168.1.11:8000/ のような IP アドレス直打ちでの HTTP アクセスがほとんどです。EDCB Material WebUI・TVRemotePlus・Mirakurun・EPGStation などの DTV 関連のソフトでも、同様のアクセス方法が取られてきました。

…ところが、最近のブラウザはインターネット上に公開されている Web サイトのみならず、盗聴のリスクが著しく低いローカル LAN 上の Web サイトにも、HTTPS を要求するようになってきました。
すでに PWA の主要機能である Service Worker などをはじめ、近年追加された多くの Web API の利用に HTTPS が必須になってしまっています。こうした強力な API が HTTP アクセスでは使えないことが、KonomiTV を開発する上で大きな制約になっていました。

そこで KonomiTV では、過去に例のない非常に特殊な仕組みを使い、プライベートネットワーク上の Web サービスにも関わらず 自己署名証明書 のインストールなしで HTTPS でアクセスできるようにしました。
具体的には、Let's Encrypt の DNS 認証 / ワイルドカード証明書・ワイルドカード DNS・Keyless SSL の3つの技術を組み合わせています。tsukumijima/Akebi に技術解説とソースコードを載せていますので、よろしければご覧ください。

この仕組み (Akebi) を使うには、https://192-168-1-11.local.konomi.tv:7000/ のような HTTPS URL でアクセスする必要があります。 当然ですが、プライベート IP アドレス単体では正式な証明書を取得できないためです。

[!NOTE] https://(IPアドレス(.を-にしたもの)).local.konomi.tv:7000/ はすべてのプライベート IP アドレスに対応していますが、セキュリティ上の兼ね合いでグローバル IP アドレスには対応していません。
なお、Tailscale の 100.x.y.z アドレス には対応しています。

[!TIP] どうしてもほかの URL でアクセスしたい方向けに、一応サーバー設定 (config.yaml) にカスタム HTTPS 証明書を指定する機能を用意しています。
サポートは一切しませんので、すべて理解している方のみ行ってください。

設定ファイルの編集

KonomiTV のサーバー設定は、KonomiTV をインストールしたフォルダにある config.yaml に保存されています。

[!IMPORTANT]
KonomiTV 0.10.0 以降では、サーバー設定を KonomiTV の UI 上で変更できるようになりました!
サーバー設定を変更するには、管理者権限を持つ KonomiTV アカウントでログインし、[設定] → [サーバー設定] に移動してください。
KonomiTV サーバー内で一番最初に作成された KonomiTV アカウントには、既定で管理者権限が付与されています。

[!WARNING]
0.7.1 以前に利用されていた config.yaml と 0.8.0 以降で利用されている config.yaml は、フォーマットの互換性がありません。
KonomiTV は開発中のため、今後も設定ファイルの破壊的変更が発生する可能性があります。

[!WARNING]
config.example.yaml は、config.yaml のデフォルトの設定を記載した、config.yaml のひな形となるファイルです。
アップデート時に上書きされるため、config.example.yaml は編集しないでください。

config.yaml は、インストーラーでインストールした際に自動的に生成されます。

以下は主要な設定項目の説明です。
ほかにも設定項目はありますが、基本的に変更の必要はありません。

バックエンドの設定

KonomiTV のバックエンドには、EDCB または Mirakurun / mirakc のいずれかを選択できます。
general.backendEDCB または Mirakurun を指定してください。

[!WARNING]
一部 Windows 環境では localhost の名前解決が遅いため、チューナーが数秒遅れて起動し、ストリーミング開始までの待機時間が長くなる場合があります。
EDCB / Mirakurun と同じ PC に KonomiTV をインストールしている場合、localhost ではなく 127.0.0.1 の利用を推奨します。


EDCB をバックエンドとして利用する場合は、EDCB (EpgTimerNW) の TCP API の URL (general.edcb_url) をお使いの録画環境に合わせて編集してください。

通常、TCP API の URL は tcp://(EDCBのあるPCのIPアドレス):4510/ になります。接続できない際は、ファイアウォールの設定や EpgTimer Service が起動しているかを確認してみてください。
前述のとおり、あらかじめ EDCB の事前設定を済ませておく必要があります。

[!NOTE]
TCP API の URL として tcp://edcb-namedpipe/ と指定すると、TCP API の代わりに名前付きパイプで通信を行います(KonomiTV と EDCB が同じ PC で起動している場合のみ)。


Mirakurun / mirakc をバックエンドとして利用する場合は、Mirakurun / mirakc の HTTP API の URL (general.mirakurun_url) をお使いの録画環境に合わせて編集してください。

通常、HTTP API の URL は http://(Mirakurun/mirakcのあるPCのIPアドレス):40772/ になります。接続できない際は、Mirakurun / mirakc が起動しているかを確認してみてください。

エンコーダーの設定

エンコーダーには、ソフトウェアエンコーダーの FFmpeg のほか、ハードウェアエンコーダーの QSVEncC・NVEncC・VCEEncC・rkmppenc を選択できます。
general.encoderFFmpeg / QSVEncC / NVEncC / VCEEncC / rkmppenc のいずれかを指定してください。

ハードウェアエンコーダーを選択すると、エンコードに GPU アクセラレーションを利用するため、CPU 使用率を大幅に下げる事ができます。
エンコード速度も高速になるため、お使いの PC で利用可能であれば、できるだけハードウェアエンコーダーを選択することを推奨します。

[!NOTE]
お使いの PC で選択したハードウェアエンコーダーが利用できない場合、ライブストリーミング時にその旨を伝えるエラーメッセージが表示されます。まずはお使いの PC でハードウェアエンコーダーが使えるかどうか、一度試してみてください(設定ファイルの変更後はサーバーの再起動が必要です)。

[!NOTE]
前述のとおり、Linux 環境で QSVEncC・NVEncC・VCEEncC・rkmppenc を利用する場合は、別途 GPU ドライバーのインストールが必要です。

QSVEncC は、Intel 製 CPU の内蔵 GPU に搭載されているハードウェアエンコード機能 (Intel QSV) を利用するエンコーダーです。
ここ数年に発売された Intel Graphics 搭載の Intel 製 CPU であれば基本的に搭載されているため、一般的な PC の大半で利用できます。内蔵 GPU なのにもかかわらず高速で、画質も良好です。

[!WARNING]
Linux 版の Intel QSV は、Broadwell (第5世代) 以上の Intel CPU でのみ利用できます。そのため、Haswell (第4世代) 以下の CPU では、QSVEncC を利用できません。
なお、Windows 版の Intel QSV は、Haswell (第4世代) 以下の CPU でも利用できます。

NVEncC は、Geforce などの NVIDIA 製 GPU に搭載されているハードウェアエンコード機能 (NVENC) を利用するエンコーダーです。
高速で画質も QSV より若干良いのですが、Geforce シリーズでは同時にエンコードが可能なセッション数が 3 に限定されているため、同時に 3 チャンネル以上視聴することはできません。
同時に 4 チャンネル以上視聴しようとした場合、KonomiTV では「NVENC のエンコードセッションが不足しているため、ライブストリームを開始できません。」というエラーメッセージが表示されます。

VCEEncC は、Radeon などの AMD 製 GPU に搭載されているハードウェアエンコード機能 (AMD VCE) を利用するエンコーダーです。
QSVEncC・NVEncC に比べると安定しない上に、画質や性能もあまり良くありません。もし QSVEncC・NVEncC が使えるならそちらを使うことをおすすめします。

rkmppenc は、RK3588 などの Rockchip 製 ARM SoC に搭載されているハードウェアエンコード機能 (mpp) を利用するエンコーダーです。
画質は VCEEncC と同等くらいですが、ARM デバイスで利用できるハードウェアエンコーダーとしては最高レベルの性能を誇ります。

リッスンポートの設定

server.port に、KonomiTV サーバーのリッスンポートを指定してください。
デフォルトのリッスンポートは 7000 です。

[!NOTE]
インストーラーでのインストール時にポート 7000 がほかのサーバーソフトと重複している場合は、代わりのポートとして 7100 (7100 も利用できない場合は、さらに +100 される) が自動的にデフォルトのリッスンポートに設定されます。

基本的に変更の必要はありません。変更したい方のみ変更してください。

アップロードしたキャプチャ画像の保存先フォルダの設定

capture.upload_folders に、アップロードしたキャプチャ画像の保存先フォルダを指定してください。

クライアントの [キャプチャの保存先] 設定で [KonomiTV サーバーにアップロード] または [ブラウザでのダウンロードと、KonomiTV サーバーへのアップロードを両方行う] を選択したときに利用されます。

デフォルトの保存先フォルダは、インストーラーで入力したフォルダが自動的に設定されています。
保存先フォルダを変更したくなったときは、この設定を変更してください。


<img width="100%" src="https://user-images.githubusercontent.com/39271166/201438534-10a19a9e-56ef-4c9e-88c2-2198de76979d.png"><br>

サーバー設定の変更を反映するには、KonomiTV サーバー (KonomiTV Service) の再起動が必要です。

[!IMPORTANT]
KonomiTV 0.10.0 以降では、KonomiTV の UI から KonomiTV サーバーを再起動できるようになりました!
KonomiTV サーバーを再起動するには、管理者権限を持つ KonomiTV アカウントでログインし、[設定] → [サーバー設定] → [メンテナンス] に移動してください。
KonomiTV サーバー内で一番最初に作成された KonomiTV アカウントには、既定で管理者権限が付与されています。

なお、config.yaml が存在しなかったり、設定項目が誤っているとサーバーの起動の時点でエラーが発生します。
その際は server/logs/KonomiTV-Server.log に出力されているエラーメッセージに従い、config.yaml の内容を確認してみてください。

局ロゴ

KonomiTV には、放送波から取得できるものよりも遥かに高画質な局ロゴが同梱されています。
ほとんどの地上波チャンネル・BS/CS の全チャンネル・一部の CATV のコミュニティチャンネルをカバーしており、受信できるチャンネルに対応する局ロゴが同梱されていれば、それが利用されます。

[!NOTE]
放送波から取得できる局ロゴは最高でも 64x36 で、現代的なデバイスで見るにはあまりにも解像度が低すぎます。とはいえ、局ロゴがなければぱっとチャンネルを判別できなくなり、ユーザー体験が悪化してしまいます。
さらに、局ロゴは何らかの事情で取得できていないことも考えられます。こういった事情もあり、高画質な局ロゴを同梱しています。

チャンネルに対応する局ロゴが同梱されていない場合は、Mirakurun・EDCB のいずれかから局ロゴの取得を試みます。Mirakurun または EDCB から局ロゴを取得できなかった場合は、デフォルトの局ロゴが利用されます。

[!NOTE]
同梱されているロゴは server/static/logos/NID(ネットワークID)-SID(サービスID).png (解像度: 256×256) のフォーマットで保存されています。
チャンネルのネットワーク ID とサービス ID がわかっていれば、自分で局ロゴ画像を作ることも可能です。

FAQ

Web UI にアクセスすると 502 Bad Gateway エラーが表示される

KonomiTV サーバーの起動中と考えられます。しばらく待ってから再度アクセスしてみてください。

数分待ってもアクセスできない場合は、KonomiTV サーバーがエラー終了している可能性があります。server/logs/KonomiTV-Server.log に出力されているエラーログを確認してみてください。

Web UI にアクセスすると「Client sent an HTTP request to an HTTPS server.」と表示される

エラーメッセージの通り、http:// でアクセスしてしまっているときに表示されます。
KonomiTV サーバーは HTTPS で起動しているため、Web UI には https:// で始まる URL でアクセスする必要があります。

Web UI にアクセスすると「このサイトは安全に接続できません」「~から無効な応答が送信されました。」(ERR_SSL_PROTOCOL_ERROR) と表示される

https://aa-bb-cc-dd.local.konomi.tv:7000/ の URL について の項目で説明した通り、KonomiTV では過去に例のない非常に特殊な仕組みを使い、自己署名証明書 のインストールなしで HTTPS でアクセスできるようにしています。

Web UI には https://(IPアドレス(.を-にしたもの)).local.konomi.tv:7000/ のフォーマットの HTTPS URL (例: https://192-168-1-11.local.konomi.tv:7000/) でアクセスしてください。
URL が少し長いので、適宜ブックマークやホーム画面に追加しておくと便利です。

[!IMPORTANT]
上記のフォーマット以外の URL (例: https://localhost:7000/https://192.168.1.11:7000/) では証明書や HTTPS の通信エラーが発生し、Web UI にアクセスできない仕様になっています。
当然ですが、プライベート IP アドレス単体では正式な証明書を取得できないためです。

Web UI にアクセスすると、DNS エラーが表示される

お使いのルーターで DNS Rebinding Protection が有効になっている可能性があります。

KonomiTV を利用するには、DNS Rebinding Protection を無効にする必要があります。
適宜ルーターの設定を変更するか、お使いのデバイスの DNS を 1.1.1.1 や 8.8.8.8 などの公開 DNS サーバーに変更してください。

[!TIP]
OpenWRT では、Rebind Protection のチェックボックスを外すと無効化できるようです。

ライブストリーミングの視聴が安定しない・途切れ途切れになる

原因はいくつか考えられますが、回線速度が遅かったり、不安定な通信環境であることが考えられます。

全般

KonomiTV サーバーのある自宅の Wi-Fi につないで視聴しているとき

外出先 (自宅以外) から Tailscale 経由で視聴しているとき

<img width="100%" src="https://user-images.githubusercontent.com/39271166/201457873-dab7a1cb-667f-4bcd-8843-231850d05689.png"><br>

開発者向け情報

VS Code を開発に利用しています。
開発時に推奨する VS Code 拡張機能は .vscode/extensions.json に記述されています。

開発版 KonomiTV のインストール (開発環境の構築)

ここでは、master ブランチにある最新の開発版 KonomiTV を手動でインストールする方法を説明します。
サポートは行えませんので、技術的な知識がある方のみお試しください。

事前に、上記ソフトウェアをインストールしている必要があります。

開発環境は Windows 10 (x64) と Ubuntu 20.04 LTS (x64) で動作を確認しています。
なお、開発環境の Docker での動作は想定していません。サードパーティーライブラリなどの兼ね合いで、Docker では開発時の柔軟性が低くなってしまうためです。

# Windows は PowerShell 7 で、Ubuntu は bash での実行を想定

# リポジトリの clone
## /Develop の部分は適宜変更すること
cd /Develop
git clone https://github.com/tsukumijima/KonomiTV.git

# 設定ファイルのコピーと編集
## config.yaml は適切に構成されている必要がある (さもなければサーバーが起動しない)
cd KonomiTV/
# Windows
Copy-Item -Force config.example.yaml config.yaml
# Linux:
cp -a config.example.yaml config.yaml
nano config.yaml

# 一時的な Poetry 仮想環境の構築 (UpdateThirdparty の実行に必要)
cd server/
poetry env use 3.11
poetry install --no-root

# 最新のサードパーティーライブラリを GitHub Actions からダウンロード
## 本番環境用のスタンドアローン版 Python もサードパーティーライブラリに含まれている
poetry run task update-thirdparty

# サードパーティーライブラリ内のスタンドアローン版 Python を明示的に指定して Poetry 仮想環境を再構築
# Windows:
Remove-Item -Recurse -Force .venv/
poetry env use /Develop/KonomiTV/server/thirdparty/Python/python.exe
# Linux
rm -rf .venv/
poetry env use /Develop/KonomiTV/server/thirdparty/Python/bin/python

# 依存パッケージのインストール
poetry install --no-root

サーバーの起動

KonomiTV サーバー (KonomiTV.py) を起動すると、内部で UvicornAkebi HTTPS Server が起動されます。

Uvicorn は ASGI サーバーで、FastAPI で記述された KonomiTV のアプリケーションサーバーを実行します。
また、KonomiTV の場合は client/dist/ 以下の静的ファイル (クライアント) を配信する Web サーバーの役割も兼ねています。
Akebi HTTPS Server は、自己署名証明書なしでプライベートネットワーク上の HTTP サーバーに HTTPS 化するためのリバースプロキシサーバーです。

実際にユーザーがアクセスするのは Uvicorn の HTTP (HTTP/1.1) サーバーのリバースプロキシである、Akebi HTTPS Server による HTTPS (HTTP/2) サーバーになります。
Uvicorn も Akebi HTTPS Server も KonomiTV.py の起動時に透過的に同時起動されるため、一般のユーザーが意識する必要はありません。

cd /Develop/KonomiTV/server/

# リロードモードで起動する
poetry run task dev

# 通常モードで起動する
poetry run task serve

サーバーの起動方法には、リロードモードと通常モードの2つがあります。

通常モードは、本番環境 (リリース版) での Windows サービスや PM2 サービスで起動されるサーバーと同じモードになります。
より厳密にサービス起動時の環境を再現したい際は、sudo などで root 権限/管理者権限で実行してください。

リロードモードでは、server/ 以下のコードを変更すると自動でサーバーが再起動されます。
コードが変更されると今まで起動していたサーバープロセスは強制終了され、新しいサーバープロセスが起動されます。

[!WARNING]
リロードモードかつ EDCB バックエンド利用時、サーバーを終了するタイミング次第では、EDCB のチューナープロセス (EpgDataCap_Bon) が終了されないままになることがあります。
必ずログでエンコードタスクが終了 (Offline) になったことを確認してから、サーバーを終了してください。

[!WARNING]
Python の asyncio の制限により、リロードモードは事実上 Windows 環境では利用できません。
正確には外部プロセス実行を伴うストリーミング視聴を行わなければ一応動作しますが、予期せぬ問題が発生する可能性があります。
こうした関係もあり、現在の開発は Linux (Ubuntu 20.04 LTS) をメインに行っています。

起動したサーバーは、https://my.local.konomi.tv:7000/ でリッスンされます。 特にリッスン範囲の制限はしていないので、プライベートネットワーク上の他の PC やスマホからもアクセスできます。
サーバーを終了するときは、Ctrl+C を押してください。

起動中のサーバーのログは、server/logs/KonomiTV-Server.log に保存されます。
同時起動される Akebi HTTPS Server のログは server/logs/Akebi-HTTPS-Server.log に保存されます。

[!NOTE]
サーバー設定でデバッグモード (general -> debug) を有効にすると、デバッグログも出力されるようになります。開発環境では常にデバッグモードにしておくことをおすすめします。
さらにエンコーダーのログ (general -> debug_encoder) を有効にすると、エンコーダーのログが server/logs/KonomiTV-Encoder-(ストリームID).log に保存されます。

API ドキュメント (Swagger) は https://my.local.konomi.tv:7000/api/docs にあります。
API ドキュメントは FastAPI によって自動生成されたものです。
その場で API リクエストを試せたり、グラフィカルに API ドキュメントを参照できたりととても便利です。ぜひご活用ください。

Windows / PM2 サービスのインストールと起動

ここでは、上記手順で構築した開発環境を Windows / PM2 サービスとして起動する方法を説明します。

Windows サービス

事前に PowerShell 7 を管理者権限で起動しておいてください。
管理者権限でない場合、Windows サービスのインストールに失敗します。

[!WARNING]
KonomiTV の Windows サービスは相当強引な手法で実装しているため (そうせざるを得なかった…) 、開発状況次第では Windows サービスでのみ動作しなくなっている可能性があります。
動作不良時は、一度 poetry run task serve で起動できるかや、server/logs/KonomiTV-Server.log 内のログを確認してみてください。

[!NOTE]
KonomiTV-Service.py は、KonomiTV の Windows サービスの管理を行うユーティリティスクリプトです。 poetry run python KonomiTV-Service.py --help と実行すると、利用できるコマンドの一覧が表示されます。

cd /Develop/KonomiTV/server/

# Windows サービスのインストール
## インストールと同時に自動起動 (OS 起動後数分遅延してから) も設定される
poetry run python KonomiTV-Service.py install --username (ログオン中のユーザー名) --password (ログオン中ユーザーのパスワード)

# Windows サービスの起動
## sc start "KonomiTV Service" でも起動できる
poetry run python KonomiTV-Service.py start

# Windows サービスの停止
## sc stop "KonomiTV Service" でも停止できる
poetry run python KonomiTV-Service.py stop

# Windows サービスのアンインストール
## アンインストールと同時に自動起動の設定も解除される
poetry run python KonomiTV-Service.py stop  # サービスを停止してからアンインストールすること
poetry run python KonomiTV-Service.py uninstall

PM2 サービス

事前に root 権限で PM2 がインストールされている必要があります。

cd /Develop/KonomiTV/server/

# PM2 サービスのインストール
sudo pm2 start .venv/bin/python --name KonomiTV -- KonomiTV.py

# PM2 のスタートアップ設定
sudo pm2 startup

# PM2 への変更の保存
sudo pm2 save

# PM2 サービスの起動
sudo pm2 start KonomiTV

# PM2 サービスの停止
sudo pm2 stop KonomiTV

# PM2 サービスのアンインストール
sudo pm2 stop KonomiTV  # サービスを停止してからアンインストールすること
sudo pm2 delete KonomiTV
sudo pm2 save

クライアントの開発・ビルド

クライアント (フロントエンド) は Vue.js 3.x の SPA (Single Page Application) で開発されており、コーディングとビルドには少なくとも Node.js が必要です。
Node.js 20.16.0 / yarn 1.x で開発しています。

cd /Develop/KonomiTV/client/

# 依存パッケージのインストール
yarn install

# クライアントの開発サーバーの起動
yarn dev

# クライアントのビルド
## ビルド成果物は client/dist/ に出力され、サーバー側の HTTP サーバーによって配信される
yarn build

起動したクライアントの開発サーバーは、https://my.local.konomi.tv:7001/ でリッスンされます。
client/ 以下のコードを変更すると、自動で差分が再ビルドされます。
特にリッスン範囲の制限はしていないので、プライベートネットワーク上の他の PC やスマホからもアクセスできます。
サーバーを終了するときは、Ctrl+C を押してください。

[!WARNING]
yarn dev でクライアントの開発サーバーを起動する際は、必ず poetry run task dev でサーバー側の開発サーバーも起動してください。
クライアントの開発サーバーはフロントエンド側の静的ファイルのみをホスティングしますが、サーバー側の開発サーバーは静的ファイルの配信だけでなく、API サーバーとしての役割も兼ねています。
このため、クライアントの開発サーバーのみ、クライアントからのサーバー API のアクセス先を https://(サーバーと同じIPアドレス).local.konomi.tv:7000/ に固定しています。

クライアントの静的ファイルは、client/dist/ に配置されているビルド済みの成果物を、サーバー側で配信するように構成されています。
そのため、yarn build でクライアントのビルドを更新したのなら、サーバー側で配信される静的ファイルも同時に更新されることになります。

<img width="100%" src="https://user-images.githubusercontent.com/39271166/201461029-2f75a38f-928c-4f23-8552-e2d845d67365.jpg"><br>

寄付・支援について

とてもありがたいことに私に寄付したいという方が複数いらっしゃったので、今のところ アマギフ (Amazon ギフト券) だけ受けつけています。

特典などは今のところありませんが、それでも寄付していただけるのであれば、アマギフの URL を Twitter の DM (クリックすると DM が開きます)tvremoteplusあっとgmail.com まで送っていただけると、大変開発の励みになります…🙏🙏🙏

[!NOTE]
アマギフを送っていただく際に KonomiTV に実装してほしい機能を添えていただければ、もしかするとその機能を優先して実装することがある…かもしれません。
ただし、私個人のプライベートやモチベーション、技術的な難易度などの兼ね合いもあるため、『必ず実装する』とお約束することはできません。あくまで私からのちょっとしたお礼レベルなので、基本期待しないでいただけると…。

また、一応 Amazon のほしい物リスト もあります。 どのようなものでも贈っていただけると泣いて喜びます…。

このほか、こちら のリンクをクリックしてから Amazon で何かお買い物していただくことでも支援できます (Amazon アソシエイト)。
買う商品はどのようなものでも OK ですが、より 紹介料率 (商品価格のうち、何%がアソシエイト参加者に入るかの割合) が高く、価格が高い商品の方が、私に入る報酬は高くなります。Kindle の電子書籍や食べ物・飲み物は紹介料率が高めに設定されているみたいです。

[!NOTE]
もしかすると GitHub から Amazon に飛ぶとリファラチェックで弾かれてしまうかもしれないので、リンクをコピペして新しく開いたタブに貼り付ける方が良いかもしれません。

Special Thanks

KonomiTV の開発にあたり、ほかにも沢山の方からサポートやフィードバック、ご支援をいただきました。
この場をお借りして厚く感謝を申し上げます。 本当にありがとうございました!

License

MIT License