Files
obs-game-stream-plugin/frontend/index.html
T
bhetherman 180e95f74d Fix audio, routing, auth, and stream lifecycle
- Switch OBS output to RTMP; add FFmpeg AAC->Opus transcoding via MediaMTX
  runOnReady so WebRTC can carry audio (WebRTC requires Opus, not AAC)
- Enable RTSP on localhost so FFmpeg reads game path without publisher conflict;
  viewers connect to game-opus path (H264+Opus)
- Fix WHEP/HLS path prefix stripping in NPM advanced config; move all custom
  locations (/whep, /hls, /v3) out of NPM GUI and into advanced conf so
  trailing-slash proxy_pass correctly strips prefixes before hitting MediaMTX
- Fix MediaMTX API port 49997->19997 (49997 was in Windows ephemeral range)
- Add /status proxy endpoint to OBS HTTP server so frontend can poll stream
  readiness without hitting /v3/ through NPM where auth_request blocked it
- Fix authInternalUsers: split publish (localhost only) from read (any IP)
  so WHEP viewers are not challenged with Basic Auth by MediaMTX
- Remove muted attribute from video element; show unmute/play button on
  autoplay block so viewers get audio after one click
- Fix webrtcAdditionalHosts to include LAN IP 192.168.50.254
- Fix hlsAllowOrigin->hlsAllowOrigins deprecation warning
- Move MediaMTX/HTTP server startup to script_load (not streaming started)
  so MediaMTX is ready before OBS attempts RTMP connection
- Log MediaMTX output to bin/mediamtx.log for easier debugging

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 03:42:38 -04:00

40 lines
1.4 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="referrer" content="no-referrer">
<title>Game Stream</title>
<link rel="stylesheet" href="/css/style.css">
<!-- hls.js is only loaded if WebRTC fails and we need the HLS fallback. -->
</head>
<body>
<main id="stage">
<video id="video" autoplay playsinline></video>
<div id="overlay" class="overlay">
<div class="overlay-card">
<h1 id="overlay-title">Stream offline</h1>
<p id="overlay-message">Waiting for the streamer to start&hellip;</p>
<div class="spinner" aria-hidden="true"></div>
</div>
</div>
</main>
<footer id="status-bar">
<span id="status-indicator" class="status offline">OFFLINE</span>
<span class="separator">|</span>
<span>Viewers: <b id="viewer-count">0</b></span>
<span class="separator">|</span>
<span>Latency: <b id="latency">--</b></span>
<span class="separator">|</span>
<span>Transport: <b id="transport">--</b></span>
<span class="spacer"></span>
<button id="unmute-btn" type="button" hidden>Click to unmute</button>
</footer>
<script src="/js/player.js"></script>
<script src="/js/app.js"></script>
</body>
</html>