2.3 KiB
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 dejust_audio, elFuturedeplay()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/bufferingpara spinner,ready + playingpara estado en directo. - El ejemplo de radio de
just_audioconfiguraAudioSessiony 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 desdeplayMediaItem, hay que evitar que errores tardíos de la fuente anterior limpien la emisora nueva. Es una carrera típica cuando se hacestop()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 luegoplay()sinawait, 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.reproducircon revisión para que una reproducción vieja que termine tarde no aplique presets/clicks encima de la emisora nueva.
Fuentes consultadas
- just_audio
AudioPlayer.play()API: https://pub.dev/documentation/just_audio/latest/just_audio/AudioPlayer/play.html - just_audio
AudioPlayerAPI general: https://pub.dev/documentation/just_audio/latest/just_audio/AudioPlayer-class.html - Ejemplo de radio en vivo de just_audio: https://gist.github.com/scysys/7f700cd49f09ba788021504e8d3477aa
- Discusión sobre cambiar fuente con audio_service + just_audio: https://stackoverflow.com/questions/70526156/changing-audio-source-in-audio-service-and-just-audio-flutter