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

@ -183,6 +183,12 @@ func TestHLSCopy_H264Ac3TranscodesAudio(t *testing.T) {
if !containsSeq(args, "-c:a", "aac") {
t.Errorf("expected -c:a aac for AC3 source, args: %v", args)
}
// MUST downmix to stereo: 6-channel ffmpeg-native AAC is rejected by
// WebKit/Apple HLS at the first media segment (every 5.1 movie failed on
// iPhone while stereo-AAC sources played — confirmed via Safari access log).
if !containsSeq(args, "-ac", "2") {
t.Errorf("expected -ac 2 (stereo downmix) for re-encoded audio, args: %v", args)
}
}
func TestHLSCopy_Hevc10Eac3_IncidentShape(t *testing.T) {