Perhaps the major technical problem in streaming media on demand over the Internet is the need to adapt to changing network conditions. Today’s commercial streaming media systems rely on Multi Bit Rate coding for adaptation. However, existing algorithms are empirical and often fail in a dynamic network. In this paper, we extend our optimal coding rate control framework and address the unique problems posed by the MBR stream switching constraints. A purely client-driven solution is provided, which achieves three goals: low startup delay (much less than 1 s even without bursting), continuous playback in the face of severe congestion, and maximal quality and smoothness over the entire streaming session. We argue that our algorithm complements any transport protocol, and we demonstrate that it works effectively with both TCP and TFRC transport protocols. Finally, we demonstrate that our algorithm is robust against data loss and delay.