Drain sicuro in scale-in, alert Ops su overflow e controlli admin senza abilitare il deploy in produzione.
Co-authored-by: Cursor <cursoragent@cursor.com>
Scala i nodi overflow quando gli slot calano, mantiene una spare a caldo sotto carico e spegne gli idle, disattivabile con STREAM_AUTOSCALE_ENABLED.
Co-authored-by: Cursor <cursoragent@cursor.com>
Evita doppi ffmpeg tra host: stop solo sull'owner, ensure con requeue a capacità piena e coda Sidekiq youtube_relay isolata.
Co-authored-by: Cursor <cursoragent@cursor.com>
Prepara l'architettura multi-nodo (MediaMTX+ffmpeg) con assignment URL per sessione, admin di provision/drain e provider Cloud/DNS astratti verso mltv-stream.net.
Co-authored-by: Cursor <cursoragent@cursor.com>
ffmpeg fa solo remux copy A/V; le app fissano AAC 48 kHz mono; sync deploy non cancella più garage.prod.toml.
Co-authored-by: Cursor <cursoragent@cursor.com>
Evita di saturare Puma in diretta, separa i check Rails/pubblico e traccia la latenza /up per alert più affidabili.
Co-authored-by: Cursor <cursoragent@cursor.com>
Il tabellone stile SportCam e il watermark Match Live TV sono bruciati in GPU via RootEncoder; sul backend spariscono OverlayRelay, job Sidekiq e volume stream_overlays.
Co-authored-by: Cursor <cursoragent@cursor.com>
Pipeline YouTube con relay, overlay e publisher sync lato backend; fix GL pauseGlDuringRotation su Android per evitare crash in rotazione durante lo streaming Flutter.
Co-authored-by: Cursor <cursoragent@cursor.com>
Senza analyzeduration/probesize l'overlay non pubblicava su _air;
YouTube restava in attesa. Esclusi processi ffmpeg zombie da running?.
Co-authored-by: Cursor <cursoragent@cursor.com>
rsvg scrive su .tmp poi rename; il feeder ignora PNG parziali.
YouTube relay: no doppio avvio, reconnect RTMP; overlay restart solo dopo 3 miss.
Co-authored-by: Cursor <cursoragent@cursor.com>
ffmpeg: probesize/analyzeduration su _air, restart più rapido e avvio relay
al go_live. App: sincronizza started_at dal server e fallback al passaggio live.
Co-authored-by: Cursor <cursoragent@cursor.com>
ffprobe su rtmp://mediamtx si bloccava in Sidekiq e impediva
l'avvio del relay verso YouTube (pagina sempre in attesa).
Co-authored-by: Cursor <cursoragent@cursor.com>
Il relay verso YouTube ora gestisce _air senza traccia audio, ritenta
activate_broadcast finché l'ingest è active e riduce la finestra
scheduledStartTime a ~20s.
Co-authored-by: Cursor <cursoragent@cursor.com>
Il relay non usa più copy (stream inactive su YouTube); PublisherSync
nel refresh overlay; activate solo quando lo stream YouTube è active.
Co-authored-by: Cursor <cursoragent@cursor.com>
Il relay parte dal job overlay ogni 2s; scheduledStartTime ~90s invece di 5 min;
transition testing/live quando l'ingest RTMP raggiunge YouTube.
Co-authored-by: Cursor <cursoragent@cursor.com>
Il motore Android ignorava startStream in CONNECTING/RECONNECTING; la camera
ora resetta prima di pubblicare. YouTube relay parte solo con overlay attivo.
Co-authored-by: Cursor <cursoragent@cursor.com>
Non propone più il link MLTV per sessioni YouTube; la pagina /live
reindirizza a YouTube; il relay verso YouTube si riavvia al connect.
Co-authored-by: Cursor <cursoragent@cursor.com>
Tabellone, badge e brand sono ricodificati nel flusso _air via OverlayRelay;
sync punteggio HTTP, volume condiviso rails/sidekiq, qualità 720p migliorata
e badge CONNECTING in ripresa da pausa.
Co-authored-by: Cursor <cursoragent@cursor.com>