Files
pluriwave/docs/audio-switching-notes.md
T
FreeTLab 6b0faebc7f
Build & Deploy Pluriwave / Build APK + AAB release (push) Successful in 1m24s
Build & Deploy Pluriwave / Análisis de código (push) Successful in 12s
fix(player): serialize live stream switching
2026-05-21 00:50:23 +02:00

2.3 KiB

Notas de reproducción de radio con just_audio/audio_service

Referencia interna para futuras correcciones del reproductor de PluriWave. Este archivo está en docs/ y no se incluye en flutter.assets, por lo que no compila dentro de la app.

Hallazgos útiles

  • AudioPlayer.play() no debe esperarse como si fuera “arrancar y terminar” en un stream de radio en vivo. Según la documentación de just_audio, el Future de play() completa cuando la reproducción termina, se pausa o se detiene. En una radio en vivo puede quedar vivo hasta que otra acción lo interrumpa.
  • Para streams en vivo, la UI debe depender de playerStateStream: loading/buffering para spinner, ready + playing para estado en directo.
  • El ejemplo de radio de just_audio configura AudioSession y escucha errores de playback. Conviene tratar el cambio de emisora como una operación transaccional: parar fuente anterior, asignar fuente nueva y arrancar sin bloquear el flujo principal.
  • En audio_service, si se cambia de fuente desde playMediaItem, hay que evitar que errores tardíos de la fuente anterior limpien la emisora nueva. Es una carrera típica cuando se hace stop() y enseguida se carga otro stream.

Decisión aplicada en PluriWave

  • Serializar cambios de emisora con una cola interna.
  • Usar una revisión incremental para que solo la última solicitud pueda actualizar estado/errores.
  • Usar setAudioSource(..., preload: false) y luego play() sin await, para que la carga de stream vivo no bloquee la operación.
  • Ignorar errores emitidos durante la ventana de cambio de fuente, porque pueden pertenecer al stream anterior.
  • Proteger EstadoRadio.reproducir con revisión para que una reproducción vieja que termine tarde no aplique presets/clicks encima de la emisora nueva.

Fuentes consultadas