-- vim:set ft=lua: dofile(mg.script_name:gsub('[^\\/]*$','')..'util.lua') info=mg.get_info('system') info='mg_ver. '..(info:match('"version" : "(.-)"') or '')..', lua_ver. '..(info:match('"lua_version" : "(.-)"') or '')..', remote_addr='..mg.request_info.remote_addr info=info:gsub('[<>&]','') ct=CreateContentBuilder(GZIP_THRESHOLD_BYTE) ct:Append(DOCTYPE_HTML4_STRICT..[=[
]=]..DefaultHeadContents()..[=[

# EDCB Legacy WebUIについて

EDCBの操作をブラウザから行うことができます。このWebUIではJavaScript(メディア再生や補助的なものを除く)やCookieは使用しません。
このWebUIでは公開フォルダ(HttpPublic)にないファイルには原則アクセスしません。

EDCBの録画保存フォルダを公開フォルダ配下(公開フォルダ直下のvideoフォルダを推奨)に設定すれば、リンク表示などの追加機能を利用できます。

番組表などにはEDCBのEPG取得対象サービスでチェックされたサービスのみ表示します。

デバッグ出力やメニューのシステムスタンバイ機能や設定メニューからの設定の変更はデフォルトで無効化しています。
必要に応じてutil.luaの定数定義を編集して有効にしてください。

トランスコード機能(xcodeボタン)や視聴機能(viewボタン)を利用する場合は、ffmpegやQSVEncなどのトランスコーダーと tsreadexとをEDCB直下のToolsフォルダ(Windows以外では/usr/local/binなどパスの通った場所)に用意してください。
既定ではHLS再生が有効なのでtsmemsegも必要です。字幕表示のため"-d"オプション付き(master-with-dブランチ)のものを用意してください。
後述のデータ放送の表示にはpsisiarcも必要です。
また、必要に応じてutil.luaの定数定義を編集してください。
トランスコーダーなどのバージョンはとくに指定しませんが、なるべく新しいものを用意してください。
ブラウザの制限により自動再生されないことがあるので、その場合は再生画面をクリックやタップしてください。

TS-Live!のWebAssemblyモジュールを利用してブラウザ上でMPEG2の再生やサムネイル画像の表示ができます (このWebUIに配置済みのものはts-live@xtne6f/public/wasm)。
利用する場合はトランスコードオプションで「TS-Live!」を選んでください。
MPEG2の再生にはWebGPUが利用できること、localhostからのアクセス等セキュアコンテキストであること(環境情報)が必要です。
外部からWebUIにセキュアコンテキストでアクセスするには自己署名証明書を設定してHTTPSとしてアクセスするか、SSHポートフォワーディングでlocalhostにポート転送するなどしてください。
安全のため外部からアクセスするための設定はじゅうぶん慎重に行ってください。
LANなどでとくに暗号化がいらない場合は、Windowsに限りますがnetshコマンドを利用してポート転送できます。

      [localhostの15510にポート転送する設定を追加する例(要管理者権限)]
      > netsh interface portproxy add v4tov4 listenport=15510 connectaddress={EDCBのあるPCのIPv4アドレス} connectport=5510
      [設定を削除]
      > netsh interface portproxy del v4tov4 listenport=15510
      [現在の設定状態を表示]
      > netsh interface portproxy show all

視聴機能を利用する場合は、EpgDataCap_BonなどのTCP送信先にSrvPipeを追加しておく必要があります。
予約一覧にあるviewボタンは起動済みのEpgDataCap_Bonなどに接続して視聴するものです。
リスト番組表にあるviewボタンはNetworkTVモードによりEpgDataCap_Bonなどを起動して視聴するものです。
NetworkTVモードでは視聴に使用するBonDriverをEpgTimerSrv設定で指定しておく必要があります。

HLS再生時やb24tovtt出力のWebVTTが配置されたメディアファイル再生時は、aribb24.jsによる字幕表示ができます。
字幕つき全画面表示は再生画面の左上隅あたりをクリックやタップしてください。

トランスコード時や視聴時、psisiarc出力の.pscファイルが配置されたメディアファイル再生時は、web-bmlによるデータ放送の表示ができます。
※指定サービス対象データに「データカルーセルを含める」必要があります。

トランスコード時や視聴時、psisiarc出力の.pscファイルか番組情報の.program.txtファイルが配置されたメディアファイル再生時は、TVTestのNicoJKプラグインのログや実況の表示ができます。
番組情報ファイルは例えば"foo.mp4"というメディアファイルに対して"foo.program.txt"という名前で配置してください("foo.mp4.program.txt"ではありません)。
※ログの表示にはutil.luaの JKRDLOG_PATH 定数の編集が必要です。
※実況の表示にはjkcnslの2025年4月以降のものを用意してutil.luaの JKCNSL_PATH 定数を編集するか、NicoJKプラグインの commentShareMode の設定が必要です。
再生画面の中央やや下あたりをマウスオーバーやタップすると実況コメントを入力できます。"@sw"と入力して投稿すると投稿先がNX-Jikkyo・避難所に切り替わります。

ライブラリ機能などにある「DL」や「→DL」はメディアファイルを再生ではなく直接ダウンロードするためのリンクです。
ネットワークアドレスに対応した再生ソフトなどで利用できます。
ダウンロードしたメディアファイルは「OpenFile」リンクで開いて再生することもできます(データ通信量節約などに)。TSファイルについてはトランスコードしたものを開いてください。
MP4ファイルにかぎりpsisimuxを用意することで「Mux-to-TS」リンクにより上記のWebVTTや.pscファイルを結合してTSファイルに変換できます。

(Windowsのみ)tsreadex.exeを"edcbnosuspend.exe"という名前でコピーしてToolsフォルダに用意すると、メニューに「録画後動作を抑制」ボタンが現れます。
このedcbnosuspend.exeをEpgTimerSrv設定の「録画後動作の抑制条件」に指定しておくことで録画後動作を一時的に抑制することができます。
※edcbnosuspend.exeは単に起動させておくだけの何もしないプロセスです。

    ファイルの配置例:

     (EDCBのルートフォルダ)/
      |
      |---HttpPublic/
      |    |---legacy/
      |    |    |---about.html ※このページ
      |    |    |---index.html
      |    |    |---util.lua
      |    |    :
      |    |
      |    |---video/
      |    |    |---(メディアファイルなど)
      |    |    :
      |    |
      |    |---(他のWebUIスクリプトなど)
      |    |---index.html
      |    :
      |
      | (Windows以外では各コマンドはパスの通った場所に置く。以下はWindowsのみ)
      |
      |---Tools/
      |    |---asyncbuf.exe
      |    |---edcbnosuspend.exe ※tsreadex.exeをコピーしたもの
      |    |---psisiarc.exe
      |    |---psisimux.exe
      |    |---tsmemseg.exe
      |    |---tspgtxt.exe
      |    |---tsreadex.exe
      |    |---ffmpeg/
      |    |    |---ffmpeg.exe
      |    |    |---ffprobe.exe ※LegacyWebUIでは未使用
      |    |    :
      |    |
      |    |---NVEncC/
      |    |    |---NVEncC.exeまたはNVEncC64.exe
      |    |    :
      |    |
      |    |---QSVEncC/
      |    |    |---QSVEncC.exeまたはQSVEncC64.exe
      |    |    :
      |    |
      |    |---VCEEncC/
      |    |    |---VCEEncC.exeまたはVCEEncC64.exe
      |    :    :
      |
      |---EpgTimer.exe
      |---EpgTimerSrv.exe
      |---lua52.dll
      |---zlib52.dll
      :

スクリプトはLua 5.2を使用しています。Lua 5.2 Reference Manual (有志による日本語訳)
EDCBによる追加機能はDocument/Readme_Mod.txtの「Lua edcbグローバル変数の仕様」を参照してください。

無保証です。セキュリティに気をつけてください。スクリプトの改変、再配布などすべて自由です。
このWebUIはASCIIの英数記号のフォルダ名であれば公開フォルダ配下で任意にリネームやコピーできます。

スクリプト作成などにあたって特にEDCB Material WebUIを参考にしています。
トランスコード機能は「Tvmaid MAYA ストリーミング設定」やChinachuやTVRemotePlusを参考にしました。

環境情報
  ]=]..info..[=[
  ]=]..os.date('!%Y-%m-%dT%H:%M:%S',os.time()+9*3600)..[=[+09:00

]=]) ct:Finish() mg.write(ct:Pop(Response(200,'text/html','utf-8',ct.len,ct.gzip)..'\r\n'))