2d5f0691c2
Tap→audio measured at ~370ms — that path's fast. Real symptom: a few seconds of audio, then silence with no event surfaced to Flutter. ExoPlayer is failing/completing somewhere and we have no log to act on. Three changes, all log-only: - Add onError to playbackEventStream so stream failures (404, range- request bugs, decoder errors, network drops) print instead of silently halting playback. - Subscribe to playerStateStream and log playing + processingState on every transition. Silent stops will now show as a state shift to completed / idle / buffering with no resumption. - Subscribe to processingStateStream separately to catch fine-grained state transitions ExoPlayer reports between source advances. After hot-restart, tap-then-go-quiet should produce a sequence we can read — most likely either "processingState=completed" partway through (server returning premature EOS or wrong Content-Length) or a thrown error from ExoPlayer's source-loading path.