fix(stream): downmix estéreo en el audio re-encodeado del modo copy

Sin -ac 2 una fuente 5.1 (AC3/EAC3) producía AAC de 6 canales del encoder
nativo de ffmpeg, que WebKit/Apple HLS rechaza al sniffar el primer
segmento: en el access log de Safari se ve master → index → init → seg-0
dos veces y silencio. Era el discriminador exacto del patrón de campo:
episodios con AAC estéreo (copy de audio) reproducían en iPhone; todas las
películas 5.1 fallaban. Verificado con Safari/macOS via WebDriver-less
access log: con -ac 2 la progresión de segmentos avanza con normalidad.

Espeja los flags del path de encode (aac 192k 48kHz estéreo). Test smoke
ampliado: el re-encode debe llevar -ac 2.
This commit is contained in:
Deivid Soto 2026-06-11 00:02:53 +02:00
parent 6c756a2569
commit f89396ceed
3 changed files with 20 additions and 1 deletions

View file

@ -690,6 +690,14 @@ func (ss *StreamServer) HLSURLsJSON(sessionID string) string {
func (ss *StreamServer) hlsHandler(w http.ResponseWriter, r *http.Request) {
ss.lastActivity.Store(time.Now().UnixNano())
// Debug access log (UNARR_HLS_DEBUG=1): which client fetches which HLS
// resource. Off by default — a player polls the playlist every few
// seconds and segments stream constantly, far too chatty for normal logs.
if os.Getenv("UNARR_HLS_DEBUG") == "1" {
host, _, _ := net.SplitHostPort(r.RemoteAddr)
log.Printf("[hls-debug] %s %s from %s UA=%q", r.Method, r.URL.Path, host, r.Header.Get("User-Agent"))
}
if ss.writeCORSHeaders(w, r, "Content-Length, Content-Range, Accept-Ranges") {
return
}