From c3fa121f1a3ec74c5980bc8981e4836ca3a708f2 Mon Sep 17 00:00:00 2001 From: yum Date: Mon, 13 Oct 2025 19:17:26 -0700 Subject: shart attack --- opt/obsproxy/server.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'opt/obsproxy') diff --git a/opt/obsproxy/server.py b/opt/obsproxy/server.py index 8191d30..242e223 100755 --- a/opt/obsproxy/server.py +++ b/opt/obsproxy/server.py @@ -22,6 +22,7 @@ BASE_DIR = Path(os.environ.get('STREAM_DIR', '/var/www/streams')) SERVER_DOMAIN = os.environ.get('SERVER_DOMAIN', 'yummers.dev') STREAM_HEX = secrets.token_hex(16) STREAM_PATH = BASE_DIR / 'live' / STREAM_HEX +DASH_ROUTE_PREFIX = f"/dash/{STREAM_HEX}" # Setup logging logging.basicConfig( @@ -74,7 +75,7 @@ def start_ffmpeg_process(): '-map', '0:v:0?', '-map', '0:a:0?', '-c:v', 'copy', - '-c:a', 'aac', '-b:a', '192k', + '-c:a', 'copy', '-f', 'dash', '-seg_duration', str(DASH_SEGMENT_TIME), '-frag_duration', str(DASH_FRAGMENT_TIME), @@ -158,16 +159,20 @@ def cleanup_stream(): # Routes -@app.route('/dash/manifest.mpd') +@app.route(f"{DASH_ROUTE_PREFIX}/manifest.mpd") def serve_dash_manifest(): """Serve the MPEG-DASH manifest""" if not stream_active: return "Stream not found", 404 + manifest_file = STREAM_PATH / "manifest.mpd" + if not manifest_file.exists(): + return "Manifest not ready", 503 + return send_from_directory(str(STREAM_PATH), "manifest.mpd") -@app.route('/dash/') +@app.route(f"{DASH_ROUTE_PREFIX}/") def serve_dash_segments(filename): """Serve the MPEG-DASH segment files""" if not stream_active: @@ -194,8 +199,11 @@ def on_publish(): if not start_ffmpeg_process(): return "Failed to start stream", 500 - logger.info("Stream started successfully") - logger.info(f"Access stream at https://{SERVER_DOMAIN}/dash/manifest.mpd") + logger.info( + "Stream active; manifest available at https://%s%s/manifest.mpd", + SERVER_DOMAIN, + DASH_ROUTE_PREFIX + ) return "OK" @@ -229,15 +237,15 @@ def health_check(): def print_instructions(): """Print usage instructions""" obs_url = f"rtmp://{SERVER_DOMAIN}/live" - vrc_url = f"rtmp://{SERVER_DOMAIN}/live/{STREAM_HEX}" + dash_url = f"https://{SERVER_DOMAIN}{DASH_ROUTE_PREFIX}/manifest.mpd" print("\n" + "="*80) print(f"{'OBS TO VRCHAT STREAMING PROXY':^80}") print("="*80) print("\n[URLS]") - print(f" OBS: {obs_url}") - print(f" VRChat: {vrc_url}") + print(f" OBS ingest: {obs_url}") + print(f" DASH: {dash_url}") print("\n[STATUS]") print(f" Stream is {'ACTIVE' if ffmpeg_process else 'INACTIVE'}") -- cgit v1.2.3