The player was rebuilt whenever the channel payload's address changed, which was every fetch (a new token each time): that was the stutter. hls.js counted its live edge in 6 s target durations and ignored IVS's prefetch segments: that was the lag. Both are fixed, prefetch segments no longer feed the bandwidth estimate, and the address now comes from the lighter playback-url endpoint with its ad opt-out kept. Resolution and CC buttons sit in the player's controls. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>