diff --git a/app/main.py b/app/main.py
index b92055c..73b1e59 100644
--- a/app/main.py
+++ b/app/main.py
@@ -12,8 +12,10 @@ import time
import os
import threading
from flask import Flask, Response, render_template, request, jsonify
+from flask_sock import Sock
app = Flask(__name__)
+sock = Sock(app)
STREAM_WIDTH = 1280
STREAM_HEIGHT = 720
@@ -105,56 +107,40 @@ def stream():
# ---------------------------------------------------------------------------
-# Audio-Stream (Ogg/Opus via ffmpeg)
+# Audio-Stream via WebSocket (Raw PCM โ Web Audio API)
+# Minimale Latenz: kein HTTP-Buffering, kein Codec-Delay
# ---------------------------------------------------------------------------
AUDIO_DEVICE = "plughw:2,0"
AUDIO_SAMPLERATE = 16000
+AUDIO_CHUNK = 512 # ~32ms bei 16kHz
-def generate_audio():
- cmd = [
- "ffmpeg",
- "-fflags", "nobuffer",
- "-flags", "low_delay",
- "-f", "alsa",
- "-thread_queue_size", "128",
- "-i", AUDIO_DEVICE,
- "-ar", str(AUDIO_SAMPLERATE),
- "-ac", "1",
- "-c:a", "libopus",
- "-b:a", "24k",
- "-frame_duration", "20",
- "-page_duration", "20000",
- "-flush_packets", "1",
- "-f", "ogg",
- "-",
- ]
+@sock.route("/audio-ws")
+def audio_ws(ws):
process = subprocess.Popen(
- cmd, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL
+ [
+ "arecord",
+ "-D", AUDIO_DEVICE,
+ "-f", "S16_LE",
+ "-r", str(AUDIO_SAMPLERATE),
+ "-c", "1",
+ ],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.DEVNULL,
)
try:
while True:
- chunk = process.stdout.read(4096)
+ chunk = process.stdout.read(AUDIO_CHUNK)
if not chunk:
break
- yield chunk
+ ws.send(chunk)
+ except Exception:
+ pass
finally:
process.kill()
-@app.route("/audio")
-def audio():
- return Response(
- generate_audio(),
- mimetype="audio/ogg; codecs=opus",
- headers={
- "Cache-Control": "no-cache, no-store",
- "X-Accel-Buffering": "no",
- },
- )
-
-
# ---------------------------------------------------------------------------
# WLAN-Verwaltung
# ---------------------------------------------------------------------------
diff --git a/app/templates/live.html b/app/templates/live.html
index 8155cd1..42e8589 100644
--- a/app/templates/live.html
+++ b/app/templates/live.html
@@ -167,7 +167,6 @@
โ Einstellungen
-