🎥 Tip de Unity WebGL — El Comportamiento Sorprendente de VideoPlayer + AudioSource

Me encontré con algo interesante hoy mientras trabajaba con Unity WebGL, y creo que vale la pena compartirlo — no como una verdad absoluta, sino como un caso del mundo real que podría ayudar a alguien a evitar unas cuantas horas de confusión.

VideoPlayer y AudioSource en WebGL

🔊 El Problema Inesperado

Mi configuración era simple: Un VideoPlayer enviando audio a un AudioSource, para poder usar el AudioMixer de Unity para controlar el volumen, el silencio y el comportamiento general del audio.

  • Funciona perfectamente en el Editor.
  • Funciona perfectamente en móvil.
  • Funciona perfectamente en escritorio.

Pero una vez que compilé para WebGL:

❌ El control de volumen no funcionaba ❌ La configuración del AudioSource era ignorada ❌ El enrutamiento del Mixer no tenía efecto ❌ El video siempre se reproducía a volumen máximo

Al principio, pensé que era un bug en mi arquitectura. Resulta que… no lo era.

❗ Por Qué Sucede

La documentación de Unity y el issue tracker confirman que en WebGL, el audio del VideoPlayer no pasa a través del pipeline del AudioSource de la misma manera que lo hace en otras plataformas.

WebGL impone algunas restricciones a nivel de navegador que esencialmente evitan el AudioSource cuando hay audio de video involucrado.

Así que incluso si tu configuración es correcta, el resultado puede no coincidir con lo que ves en el Editor.

✅ El Enfoque Que Terminé Usando

Dado que WebGL no respetaba el AudioSource, cambié de estrategia y opté por:

1️⃣ Usar Salida de Audio Directa

videoPlayer.audioOutputMode = VideoAudioOutputMode.Direct;

2️⃣ Manejar volumen/silencio a través de la API de VideoPlayer

videoPlayer.SetDirectAudioVolume(0, volume);
videoPlayer.SetDirectAudioMute(0, muted);

3️⃣ Crear un pequeño controlador global

Construí un manager ligero (DontDestroyOnLoad) para actuar como un "mezclador de audio de video" personalizado para mantener un comportamiento consistente de volumen/silencio entre escenas.

No es la única solución. No es necesariamente la mejor para cada proyecto. Pero funcionó de manera confiable para mi caso de uso en WebGL y respetó las restricciones de la plataforma.

🎯 Conclusión

Si estás trabajando con videos en Unity WebGL, ten en cuenta que:

  • El control de volumen basado en AudioSource podría no comportarse como se espera
  • Las limitaciones de audio del navegador juegan un papel más importante que en otras plataformas
  • Es posible que debas ajustar tu enfoque dependiendo de tu arquitectura

Y si te encuentras con el mismo problema que yo, los controles de audio directo del VideoPlayer podrían ser una buena alternativa para explorar.

#Unity #WebGL