An apparatus for adaptive-rate content streaming, the apparatus comprising an end user station, comprising: an agent controller module to be coupled via a network controller to a set of one or more servers (102, 116) over a set of one or more TCP/IP network connections, wherein the set of servers (102, 116) stores a plurality of different copies (204, 206, 208) of a same single video each encoded at a different bit rate to provide different quality levels and each divided into a plurality of streamlets that collectively store data to playback the entire video but that individually store data to playback only a portion of the video that starts at a unique start time and whose duration is less than the entire playback duration of the single video, wherein each of the streamlets of each of the copies is encapsulated as an independent media object playable by the end user station, the agent controller module configured to make streamlet requests to receive streamlets storing sequential portions of the single video, where each streamlet request is for a particular quality level selected by the agent controller module by requesting the portion from a particular copy of the single video; the network controller configured to process said requests from the agent controller module for streamlets and to make HTTP requests to the set of servers (102, 116) over the set of network connections to obtain the streamlets, wherein the agent controller module is further configured to monitor the progress of the streamlet requests by calculating a performance factor according to the responses to the streamlet requests; based on said monitored progress, the agent controller module further configured to make successive determinations (611, 708, 710, 712, 714) to shift the playback quality to achieve continuous playback of the single video by requesting the streamlets of the highest quality one of the copies (204, 206, 208) determined sustainable at that time; a staging module configured to arrange the requested streamlets sequentially in order of ascending playback time; and, a content player to playback the requested streamlets as staged by the staging module to playback the single video, characterized in that the determinations to shift the playback quality comprise upshifting to a higher quality copy when the performance factor is greater than a trigger threshold that is selected according to the current read ahead margin, being the amount of contiguously available streamlets stored in the staging module, so as to discourage upshifting until a larger read ahead margin is established. an agent controller module to be coupled via a network controller to a set of one or more servers (102, 116) over a set of one or more TCP/IP network connections, wherein the set of servers (102, 116) stores a plurality of different copies (204, 206, 208) of a same single video each encoded at a different bit rate to provide different quality levels and each divided into a plurality of streamlets that collectively store data to playback the entire video but that individually store data to playback only a portion of the video that starts at a unique start time and whose duration is less than the entire playback duration of the single video, wherein each of the streamlets of each of the copies is encapsulated as an independent media object playable by the end user station, the agent controller module configured to make streamlet requests to receive streamlets storing sequential portions of the single video, where each streamlet request is for a particular quality level selected by the agent controller module by requesting the portion from a particular copy of the single video; the network controller configured to process said requests from the agent controller module for streamlets and to make HTTP requests to the set of servers (102, 116) over the set of network connections to obtain the streamlets, wherein the agent controller module is further configured to monitor the progress of the streamlet requests by calculating a performance factor according to the responses to the streamlet requests; based on said monitored progress, the agent controller module further configured to make successive determinations (611, 708, 710, 712, 714) to shift the playback quality to achieve continuous playback of the single video by requesting the streamlets of the highest quality one of the copies (204, 206, 208) determined sustainable at that time; a staging module configured to arrange the requested streamlets sequentially in order of ascending playback time; and, a content player to playback the requested streamlets as staged by the staging module to playback the single video, characterized in that the determinations to shift the playback quality comprise upshifting to a higher quality copy when the performance factor is greater than a trigger threshold that is selected according to the current read ahead margin, being the amount of contiguously available streamlets stored in the staging module, so as to discourage upshifting until a larger read ahead margin is established.