diff options
Diffstat (limited to 'opt/obsproxy/server.py')
| -rwxr-xr-x | opt/obsproxy/server.py | 28 |
1 files changed, 5 insertions, 23 deletions
diff --git a/opt/obsproxy/server.py b/opt/obsproxy/server.py index 27933b8..16d10cf 100755 --- a/opt/obsproxy/server.py +++ b/opt/obsproxy/server.py @@ -6,7 +6,7 @@ import subprocess import threading import shutil from pathlib import Path -from flask import Flask, request, send_from_directory +from flask import Flask, request import logging import atexit @@ -17,8 +17,10 @@ load_dotenv() # Configuration INGEST_PSK = os.environ.get('OBS_STREAM_KEY') or os.environ.get('STREAM_PSK') +INGEST_THREAD_QUEUE_SIZE = int(os.environ.get('INGEST_THREAD_QUEUE_SIZE', '4096')) HLS_SEGMENT_TIME = float(os.environ.get('HLS_SEGMENT_TIME', '2')) HLS_PLAYLIST_SIZE = int(os.environ.get('HLS_PLAYLIST_SIZE', '6')) +HLS_DELETE_THRESHOLD = int(os.environ.get('HLS_DELETE_THRESHOLD', '2')) 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) @@ -78,6 +80,7 @@ def start_ffmpeg_process(): '-hide_banner', '-loglevel', os.environ.get('FFMPEG_LOGLEVEL', 'info'), '-fflags', '+genpts', + '-thread_queue_size', str(INGEST_THREAD_QUEUE_SIZE), '-i', f'rtmp://localhost/live/{INGEST_PSK}', '-map', '0:v:0?', '-map', '0:a:0?', @@ -90,6 +93,7 @@ def start_ffmpeg_process(): '-hls_time', str(HLS_SEGMENT_TIME), '-hls_list_size', str(HLS_PLAYLIST_SIZE), '-hls_flags', 'delete_segments+independent_segments', + '-hls_delete_threshold', str(HLS_DELETE_THRESHOLD), '-hls_segment_filename', str(STREAM_PATH / 'segment-%05d.ts'), str(STREAM_PATH / 'stream.m3u8') ] @@ -178,28 +182,6 @@ def cleanup_stream(): # Routes -@app.route(f"{HLS_ROUTE_PREFIX}/stream.m3u8") -def serve_hls_manifest(): - """Serve the HLS master playlist""" - if not stream_active: - return "Stream not found", 404 - - manifest_file = STREAM_PATH / "stream.m3u8" - if not manifest_file.exists(): - return "Manifest not ready", 503 - - return send_from_directory(str(STREAM_PATH), "stream.m3u8") - - -@app.route(f"{HLS_ROUTE_PREFIX}/<path:filename>") -def serve_hls_segments(filename): - """Serve the HLS segment files""" - if not stream_active: - return "Stream not found", 404 - - return send_from_directory(str(STREAM_PATH), filename) - - @app.route('/rtmp_callbacks/on_publish', methods=['POST']) def on_publish(): """Callback when a stream starts""" |
