summaryrefslogtreecommitdiffstats
path: root/opt/obsproxy
diff options
context:
space:
mode:
Diffstat (limited to 'opt/obsproxy')
-rwxr-xr-xopt/obsproxy/server.py28
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"""