EDCB用のWeb UIです。
EDCBの基本的な操作に加え、リモート視聴などの機能を提供します。
- SPA (Single Page Application)
- ページ遷移を最小限に抑え、ネイティブアプリのようなスムーズな操作感を提供。
- SSE (Server-Sent Events) によるリアルタイム更新
- 番組情報の更新や録画ステータスの変化をリアルタイムに反映。
- PWA (Progressive Web App)
- インストールしてオフラインでもキャッシュにより一部機能が使用可能。
- Material 3 デザイン
- 最新の M3 デザインシステムを採用。
Note
PWAやTS-Live!にSSL/TLSによる通信が必須なため、HTTPSでの運用を前提として記述しています。
1. EDCBのReadme_Mod.txtのCivetwebの組み込みについてをよく読む
Tip
配置例 (E3、legacyは任意にリネーム等可)
EDCB/
├─ HttpPublic/
│ ├─ api/
│ ├─ E3/
│ ├─ legacy/
│ ├─ video/
│ ├─ index.html
│ :
│
├─ Tools/
│ ├─ ffmpeg/
│ │ ├─ ffmpeg.exe
│ │ ├─ ffprobe.exe
│ │ :
│ ├─ NVEncC/
│ │ :
│ ├─ QSVEncC/
│ │ :
│ ├─ asyncbuf.exe
│ ├─ edcbnosuspend.exe
│ ├─ psisiarc.exe
│ ├─ psisimux.exe
│ ├─ tsmemseg.exe
│ ├─ tsreadex.exe
│ ├─ tspgtxt.exe
│ :
│
├─ Setting/
│ ├─ XCODE_OPTIONS.lua
│ ├─ HttpPublic.ini
│ :
│
├─ EpgDataCap_Bon.exe
├─ EpgTimerSrv.exe
├─ EpgTimer.exe
├─ lua52.dll
├─ SendTSTCP.dll
├─ libssl-3(-x64).dll
├─ libcrypto-3(-x64).dll
├─ ssl_cert.pem
├─ ssl_peer.pem
:
Note
最低限の動作に必要なファイルは、EDCBのreleasesのEDCB-work-plus-s-bin.zipで入手可能です。
リモート視聴を行う場合は、別途使用するトランスコーダが必要です。
EnableHttpSrv=1HttpAccessControlList=+127.0.0.1,+192.168.0.0/16HttpPort=5510,5520,5511s,5521sHttpNumThreads=50
Tip
SSEの仕様により、表示ごとにCivetWebのスレッドを1つ常に消費します。
HttpNumThreadsがデフォルトの5の場合、複数のタブで開いた場合などで応答なしとなる事があります。
デバイスの性能や同時アクセス数に合わせてHttpNumThreadsを適切な値に調整してください。
5. http://localhost:5510/ や https://localhost:5511/ にアクセスし、サーバー機能とHTTPSが有効か確認
Tip
うまく行かない場合はEDCBの設定を見直してください
Note
初期設定では、設定ページでの変更は、ローカルホストでのアクセス時のみ有効になります。
他のデバイスからの場合は、HttpPublic.iniを直接編集して設定してください。
また、ALLOW_SETTING_LISTにアクセス元のIPアドレスを追加することで設定ページからの変更が可能になります。
Tip
SSEの仕様により、ブラウザの同一オリジンに対する同時接続数制限(通常6~8接続)の1つを消費します。
レスポンスに影響が出る場合があるため、回避策としてSSE接続を専用ポートで実施します。
設定が有効の場合、SSE接続はメインのポートに設定されたポート番号に+10したポート番号で確立されます。
例: メインポートが5510の場合、SSEは5520で接続を試みます
- EpgDataCap_Bonなどのネットワーク設定でTCP送信先にSrvPipeを追加
XCODE_OPTIONS.luaでトランスコード用プリセットを設定
Important
更新の際はHttpPublicのフォルダのみを上書きしてください
下記の表の通り、オフライン機能やデータセーバー機能のために、LocalStorageにデータを保存します。
| カテゴリ | 保存量 | 自動更新 |
|---|---|---|
| EPGデータ | 2時間前から36時間分 | 〇 |
| 予約 | 全件 | 〇 |
| チューナ別予約 | 全件 | 〇 |
| 自動予約 | 全件 | 〇 |
| プログラム予約 | 全件 | 〇 |
| 録画結果 | 200件 | 〇 |
| サービス一覧 | 全件 | ✕ |
| 録画プリセット | 全件 | ✕ |
上記以外にも、アセットや局ロゴなどはサービスワーカーによりCacheStorageに保存されます。
Note
自動更新非対象のサービス一覧・録画プリセットに変更があった場合、右上アイコンの設定から「基礎データ」で再取得を実行してください。
※ただし録画プリセットは設定ページで変更した場合、変更時に再取得されます。
Tip
全録環境の場合、予約情報が膨大になるため注意してください。
セルラー回線でのアクセス時、SSEによるキャッシュデータの自動更新を停止し、キャッシュデータを使用して通信量を節約します。
更新ボタンでのみとなるため、必要に応じて手動で更新してください。
キャッシュ範囲外のデータは必要に応じて取得します。
Note
予約などを変更した場合でも、自動更新されません。
Warning
FirefoxとSafariでは回線による切り替えができません。
判定に必要なnavigator.connectionが利用できないため、有効時は回線に関係なく自動更新がOFFになります。
本プロジェクトでは以下のオープンソースライブラリを利用しています。
- Alpine.js - MIT License
- Beer CSS - MIT License
- material-dynamic-colors - MIT License
- Material Symbols - Apache License 2.0
- hls.js - Apache License 2.0
- aribb24.js - MIT License
- danmaku.js - MIT License
- web-bml - MIT License
- TS-Live! - MIT License
Legacy WebUIから、多くの部分を流用させていただきました。
EDCBという素晴らしいソフトを作成していただいたxtne6f氏に感謝します。
また、データ放送や実況などのライブラリ作者様にも感謝します。
プロジェクトを応援いただける方は、以下のリストからご支援いただけると励みになります。