Adiciona env vars de defaults de UI e melhora compatibilidade mobile dos players

---

- Adicionado endpoint GET /api/config que expõe as env vars de defaults para o frontend;
- Adicionadas env vars DEFAULT_PURE_MODE, DEFAULT_OPEN_NEW_TAB, DEFAULT_RELOAD_CLIENT e DEFAULT_RELOAD_CLIENT_TIME ao docker-compose.yml e README.md;
- Na primeira sessão sem global-prefs em localStorage, a UI busca os defaults do servidor via /api/config;
- Adicionado fallback de HLS nativo para iOS Safari em todos os players HTML (Hls.isSupported() → v.src + v.play());
- Substituído AbortSignal.timeout() por AbortController + setTimeout para compatibilidade com iOS ≤ 15;
- Corrigido stall detection falso-positivo: verificação só dispara após currentTime > 0 (vídeo realmente iniciado);
- Adicionado height: 100dvh nos players para corrigir clipping do iOS causado pelo 100vh incluir a chrome bar do browser;
- Adicionado atributo muted no <video> do player /static/[id] para permitir autoplay mobile;
- Adicionado listener de touchstart nos botões flutuantes de Back e Mute para exibição em touch;
- Botão Back do player React ampliado no mobile (px-5 py-3 text-[1.1rem]) para paridade visual com o player HTML;
- Comentários do docker-compose.yml traduzidos para inglês e reorganizados inline;

---
This commit is contained in:
2026-04-28 10:34:04 -03:00
parent 89ddf24021
commit 8bcc269594
8 changed files with 108 additions and 40 deletions
+12 -8
View File
@@ -11,19 +11,23 @@ services:
# - /dev/dri:/dev/dri # Uncomment for Intel/AMD (vaapi or qsv)
environment:
TZ: America/Sao_Paulo
# FFMPEG_HWACCEL: nvenc # GPU encoding: nvenc (NVIDIA), vaapi (Intel/AMD), qsv (Intel QSV) / Requires: nvenc → gpus: all | vaapi/qsv → devices: /dev/dri
# LD_LIBRARY_PATH: /usr/lib/wsl/lib # WSL2 + nvenc only: injects NVENC libs not auto-mounted by Docker
# AUTH_USER: admin # Se definido (junto com AUTH_PASS), habilita login
# AUTH_USER: admin # If set (with AUTH_PASS), enables login
# AUTH_PASS: secure_password
DEFAULT_PURE_MODE: false # Pure mode: raw .m3u8 / minimal player (no UI chrome)
DEFAULT_OPEN_NEW_TAB: false # Open player buttons in a new tab
DEFAULT_RELOAD_CLIENT: false # Auto-reload the client player page
DEFAULT_RELOAD_CLIENT_TIME: 2 # Client auto-reload interval in minutes
# FFMPEG_HWACCEL: nvenc # GPU encoding: nvenc (NVIDIA), vaapi / qsv (Intel/AMD)
# LD_LIBRARY_PATH: /usr/lib/wsl/lib # WSL2 + nvenc only
ports:
- "3000:3000" # Web UI — main entry point
- "127.0.0.1:6080:6080" # VNC — localhost only; remote access via tunnel/VPN
# - "1935:1935" # RTMP — internal only; expose only for external ingest (e.g. OBS)
- "127.0.0.1:6080:6080" # noVNC — localhost only; expose via tunnel/VPN for remote access
# - "1935:1935" # RTMP — expose only for external ingest (e.g. OBS)
# - "8888:8888" # HLS — internal only; proxied through Next.js at /api/hls/
volumes:
- streams:/app/data/streams # Persistent: streams.json, chrome profiles, thumbs
- streams:/app/data/streams # Persistent: streams.json, chrome profiles, thumbnails
# - ./logs:/app/data/logs # Optional: mount for external log access
# - /usr/lib/wsl/lib:/usr/lib/wsl/lib:ro # WSL2 + nvenc: exposes libnvidia-encode.so.1
# - logs:/app/data/logs # Optional
volumes:
streams:
streams: