Glitch-Free Media Streaming
First Claim
1. A method at least partially implemented by a computer, the method comprising:
- providing, by a client computing device (“
client”
), media content streaming services to a user to stream media content from a remote computing device (“
host”
), the providing being independent of whether the host implements media content streaming services, the client providing the media content streaming services by;
establishing, multiple transport protocol connections (“
connections”
) to the host;
tasking each connection of at least a subset of the connections to read a particular data segment of the media content, the data segment identifying a respective offset into the media content and a number of bytes to read;
managing connection tasks to regulate data input into a streaming media buffer for storing received data segments of the media content; and
removing data from the streaming media buffer for real-time playback to the user.
2 Assignments
0 Petitions
Accused Products
Abstract
Glitch-free media streaming is provided by a client computing device (“client”) independent of whether a remote computing device (“host”) associated with media content provides real-time media content streaming services. Specifically, the client computing device (“client”) provides a user with real-time media content streaming services by establishing multiple connections to the host to read respective portions of the media content by sending byte-range transport protocol requests to the host. As the reading operations progress, the client evaluates transmit rates over respective ones of the connections in view of a real-time media content playback rate to regulate data flow into a streaming media buffer and provide the user with a consistent high-quality (glitch-free) streaming media presentation.
160 Citations
20 Claims
-
1. A method at least partially implemented by a computer, the method comprising:
-
providing, by a client computing device (“
client”
), media content streaming services to a user to stream media content from a remote computing device (“
host”
), the providing being independent of whether the host implements media content streaming services, the client providing the media content streaming services by;establishing, multiple transport protocol connections (“
connections”
) to the host;tasking each connection of at least a subset of the connections to read a particular data segment of the media content, the data segment identifying a respective offset into the media content and a number of bytes to read; managing connection tasks to regulate data input into a streaming media buffer for storing received data segments of the media content; and removing data from the streaming media buffer for real-time playback to the user. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A computer-readable medium comprising computer-program instructions executable by a processor, the computer-program instructions when executed by the processor for performing operations comprising:
-
establishing, by a computing device (“
client”
) multiple transport protocol connections (“
connections”
) to a remote computing device (“
host”
), the connections being established to download media content from the host;reading, by the client, each bit of the media content using at least a subset of the connections by; assigning each connection of the at least a subset a respective task to read a respective data segment of the media content, the respective data segment indicating a respective offset into the media content and a respective data segment size; monitoring each connection for completion of the respective task; responsive to the monitoring; (a) determining whether to again task the connection at completion of the respective task to get a next data segment at a next offset into the media content, whether to task a different connection of the connections to read the next data segment, or whether to task a different connection of the connections to read at least a portion of the next data segment to assist the connection is completing the respective task; and (b) checking whether to change the respective data segment size for the connection; responsive to the assigning, receiving, by the client, a data segment of the media content into a buffer; and removing, by the client, data from the buffer for real-time playback to a user. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
15. A computing device comprising:
-
a processor; and a memory coupled to the processor, the memory comprising computer-program instructions for execution by the processor, the computer-program instructions for performing operations comprising; identifying an optimal number of HTTP connections to establish between the computing device and a remote computing device that is hosting the media content, the identifying being based at least on current channel bandwidth on a connection to the remote computing device (“
host”
), overhead of sending an HTTP request to the host over the connection, speed at which portions of the media content that have been downloaded to the computing device are removed from a buffer, and size of the buffer;establishing, the optimal number of HTTP connections to the host; configuring each of the connections to read a particular number of bytes of the media content at a particular offset into the media content, the particular number of bytes being less than a total size of the piece of media content; and managing media content data segment download operations over each connection in view of fluctuating network bandwidth conditions to regulate data input into the buffer and provide a real-time media playback operation with a consistent stream of media content bits at a particular playback speed. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification