Patent ID: 7720983

Claim:
A method, comprising: receiving, at a server device, a predictive play request, from a client device, the predictive play request including information about the client device, information about a client using the client device, and information about a connection between the client device and the server device; predicting, at the server device and in response to the predictive play request, one or more media streams desired by the client device; streaming at least the predicted one or more media streams from the server device to the client device; choosing, by the server device, not to predict one or more media streams to be streamed to the client device when a likelihood of making an incorrect prediction exceeds a predetermined threshold and communicating, to the client device, an identification of one or more available media streams that can be streamed to the client device without streaming the one or more available media streams, the one or more available media streams being streamed to the client device at a request of the client device; receiving a determination, from the client device, of whether at least one media stream different from the predicted one or more media streams are selected for streaming to the client device; if the at least one media stream different from the predicted one or more media streams are selected for streaming to the client device, then receiving, from the client device, an indication of the selected at least one media stream; streaming the one or more media streams from the server device to the client device using TCP (Transmission Control Protocol); in response to probing to determine whether data can be streamed from the server device to the client device using UDP (User Datagram Protocol), switching to streaming the one or more media streams from the server device to the client device using UDP when the probing indicates that data can be streamed from the server device to the client device using UDP; wherein the probing includes: receiving, by the server device, a UDP probing packet from the client device; sending, by the server device, a UDP probing response packet to the client device, to indicate to the client device that the UDP probing packet was received by the server device, when the server device can stream data to client device using UDP; and receiving, by the server device, additional UDP probing packets from the client device to verify that data cannot be streamed from the server device to the client device using UDP when the client device determines that the server device did not receive the UDP probing packet; continuing to stream the one or more media streams from the server device to the client device using TCP when the probing indicates that data cannot be streamed from the server device to the client device using UDP.