Patent ID: 8375140

Claim:
A method, comprising: employing a processor executing computer executable instructions embodied on at least one non-transitory computer readable medium to perform operations comprising: downloading a first media file from a media server at a throughput rate and concurrently playing the first media file, wherein the first media file is a first version of a media asset, the first media file is encoded at a variable bit rate and has a first overall average playback rate less than or equal to the throughput rate, the first media file has a plurality of portions with respective portion average playback rates, wherein at least two portions have different portion average playback rates; forecasting an interruption will occur in playing of the first media file by identifying an undownloaded portion of the first media file that has a portion average playback rate that is greater than the throughput rate; in response to forecasting the interruption: selecting a second media file where a portion average playback rate of the second media file for a portion that is within the second media file and that corresponds to the undownloaded portion is less than or equal to the throughput rate, wherein the second media file is a second version of the media asset, the second media file is encoded at a variable bit rate and has a second overall average playback rate that is lower than the first overall average playback rate, the second media file has a plurality of portions with respective portion average playback rates, wherein at least two portions have different portion average playback rates; identifying a first playback point in the first and second media files correlated to the undownloaded portion; downloading one or more portions of the second media file that include at least the first playback point and the portion within the second media file that corresponds to the undownloaded portion; and transitioning playing of the first media file to playing the second media file at the identified first playback point.