A method comprising: issuing a first request to a server (212, 312) for a next video segment encoded at a first bit-rate level; initiating downloading of the next video segment encoded at the first bit-rate level from the server (212, 312) and storing the next video segment in a playback buffer; comparing (902, 908) a fill level of the playback buffer to a first threshold (PTh low) and to a second threshold (PTh high); determining if a current playback lag time is greater than zero; if the fill level of the playback buffer satisfies the first threshold (PTh low), changing a first playback speed set for the next video segment to a second playback speed, or if the fill level of the playback buffer satisfies the second threshold (PTh high) and if the current playback lag time is greater than zero, changing the first playback speed set for the next video segment to a third playback speed; and decoding the next video segment from the playback buffer for playback at the first playback speed or, if the fill level of the playback buffer satisfies the first threshold (PTh low), at the second playback speed, on a display device after the next video segment has been downloaded and stored in the playback buffer, wherein the second threshold (PTh high) is greater than the first threshold (PTh low) and the third playback speed is greater than the second playback speed, the method further comprising: comparing the fill level of the playback buffer to a third threshold (PTh mid), wherein the third threshold (PTh mid) is greater than the first threshold (PTh low) and less than the second threshold (PTh high); determining if downloading a previous video segment was stopped; and if the fill level of the playback buffer satisfies the third threshold (PTh mid) and downloading the previous video segment was stopped, changing the first playback speed for the next video segment to the second playback speed. issuing a first request to a server (212, 312) for a next video segment encoded at a first bit-rate level; initiating downloading of the next video segment encoded at the first bit-rate level from the server (212, 312) and storing the next video segment in a playback buffer; comparing (902, 908) a fill level of the playback buffer to a first threshold (PTh low) and to a second threshold (PTh high); determining if a current playback lag time is greater than zero; if the fill level of the playback buffer satisfies the first threshold (PTh low), changing a first playback speed set for the next video segment to a second playback speed, or if the fill level of the playback buffer satisfies the second threshold (PTh high) and if the current playback lag time is greater than zero, changing the first playback speed set for the next video segment to a third playback speed; and decoding the next video segment from the playback buffer for playback at the first playback speed or, if the fill level of the playback buffer satisfies the first threshold (PTh low), at the second playback speed, on a display device after the next video segment has been downloaded and stored in the playback buffer, wherein the second threshold (PTh high) is greater than the first threshold (PTh low) and the third playback speed is greater than the second playback speed, the method further comprising: comparing the fill level of the playback buffer to a third threshold (PTh mid), wherein the third threshold (PTh mid) is greater than the first threshold (PTh low) and less than the second threshold (PTh high); determining if downloading a previous video segment was stopped; and if the fill level of the playback buffer satisfies the third threshold (PTh mid) and downloading the previous video segment was stopped, changing the first playback speed for the next video segment to the second playback speed. comparing the fill level of the playback buffer to a third threshold (PTh mid), wherein the third threshold (PTh mid) is greater than the first threshold (PTh low) and less than the second threshold (PTh high); determining if downloading a previous video segment was stopped; and if the fill level of the playback buffer satisfies the third threshold (PTh mid) and downloading the previous video segment was stopped, changing the first playback speed for the next video segment to the second playback speed.