-- 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([=[

# EDCB Legacy WebUIについて

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

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

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

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

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

視聴機能を利用する場合は、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ファイルが配置されたメディアファイル再生時は、TVTestのNicoJKプラグインのログや実況の表示ができます。おもに録画用アプリをTVTestにしている人向けの機能です。
※ログの表示にはutil.luaの JKRDLOG_PATH 定数の編集が必要です。
※実況の表示にはプラグインの commentShareMode の設定が必要です。
再生画面の中央やや下あたりをマウスオーバーやタップすると実況コメントを入力できます。

ライブラリ機能などにある「→DL」をクリックするとメディアファイルを再生ではなくダウンロードするためのリンクを表示します。
ネットワークアドレスに対応した再生ソフトなどで利用できます。
MP4ファイルにかぎりToolsフォルダにpsisimux.exeを用意することで「Mux-to-TS」リンクにより上記のWebVTTや.pscファイルを結合してTSファイルに変換できます。

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

    ファイルの配置例:

     (EDCBのルートフォルダ)/
      |
      |---HttpPublic/
      |    |---legacy/
      |    |    |---about.html ※このページ
      |    |    |---index.html
      |    |    |---util.lua
      |    |    :
      |    |
      |    |---video/
      |    |    |---(メディアファイルなど)
      |    |    :
      |    |
      |    |---(他のWebUIスクリプトなど)
      |    |---index.html
      |    :
      |
      |---Tools/
      |    |---asyncbuf.exe
      |    |---edcbnosuspend.exe ※tsreadex.exeをコピーしたもの
      |    |---psisiarc.exe
      |    |---psisimux.exe
      |    |---tsmemseg.exe
      |    |---tsreadex.exe
      |    |---ffmpeg/
      |    |    |---ffmpeg.exe
      |    |    |---ffprobe.exe ※LegacyWebUIでは未使用
      |    |    :
      |    |
      |    |---NVEncC/
      |    |    |---NVEncC.exeまたはNVEncC64.exe
      |    |    :
      |    |
      |    |---QSVEncC/
      |    |    |---QSVEncC.exeまたはQSVEncC64.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 and 'Content-Encoding: gzip\r\n' or '')..'\r\n'))