diff options
| author | yum <yum.food.vr@gmail.com> | 2025-10-13 19:17:26 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-10-28 17:19:35 -0700 |
| commit | c3fa121f1a3ec74c5980bc8981e4836ca3a708f2 (patch) | |
| tree | 9a481e6d5a25ea59055724fb089ceeca43a00f42 /opt | |
| parent | 8aca05a7e644f3d4aff6bcf636514882dd2ae934 (diff) | |
shart attack
Diffstat (limited to 'opt')
| -rwxr-xr-x | opt/obsproxy/server.py | 24 |
1 files changed, 16 insertions, 8 deletions
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/<path:filename>') +@app.route(f"{DASH_ROUTE_PREFIX}/<path:filename>") 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'}") |
