DELIVERING CACHEABLE STREAMING MEDIA PRESENTATIONS
First Claim
1. A computer-implemented method for providing streaming media from a server to a client, the method comprising:
- receiving a manifest request from the client;
building a client manifest to satisfy the client request based on media fragments and encoder information the server has received;
providing the built client manifest to the client in response to the manifest request;
receiving a fragment request from a client that identifies a particular media fragment;
building an incremental manifest by retrieving manifest information that describes the requested media fragment;
sending a response to the client fragment request that includes the requested media fragment and the built incremental manifest;
wherein the preceding steps are performed by at least one processor and wherein the server provides media fragments to multiple clients without storing state information regarding each of the clients.
3 Assignments
0 Petitions
Accused Products
Abstract
A smooth streaming system provides a stateless protocol between a client and server in which the server embeds incremental control information in media fragments. The server provides uniform media fragment responses to media fragment requests that are cacheable by existing Internet cache infrastructure. The smooth streaming system receives media data in fragments from one or more encoders, creates an index of each fragment, and stores the fragments. The server provides fragments to clients that contain metadata information describing the encodings available on the server and the encoding of the fragment. The server may also provide information within each fragment that allows the client to determine whether the client is requesting data too fast or too slow, so that the client can adapt its request rate to a cadence in tune with the rate at which the server is receiving encoder data.
264 Citations
20 Claims
-
1. A computer-implemented method for providing streaming media from a server to a client, the method comprising:
-
receiving a manifest request from the client; building a client manifest to satisfy the client request based on media fragments and encoder information the server has received; providing the built client manifest to the client in response to the manifest request; receiving a fragment request from a client that identifies a particular media fragment; building an incremental manifest by retrieving manifest information that describes the requested media fragment; sending a response to the client fragment request that includes the requested media fragment and the built incremental manifest; wherein the preceding steps are performed by at least one processor and wherein the server provides media fragments to multiple clients without storing state information regarding each of the clients. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A computer system for delivering cacheable streaming media presentations, the system comprising:
-
a processor and memory configured to execute software instructions; a register event component configured to receive information regarding a live media event for which the system will receive encoded media data; an encoder interface component configured to provide an interface between the system and one or more encoders that provide the encoded media data as media fragments; an index fragment component configured to create and maintain an index table of media fragments received from encoders; a fragment data store configured to store received media fragments and the created index table of fragments to provide to clients based on received client requests; a client interface component configured to receive client requests for media fragments and provide manifest data and media fragments to clients; a build client manifest component configured to build a manifest to satisfy a client request that includes information regarding each of the encodings available from the system and fragments stored by the system up to a time of the request; and a clock synchronization component configured to synchronize the clocks of the system, clients, and encoders. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
-
18. A computer-readable storage medium comprising instructions for controlling a computer system to receive encoded media fragments from one or more encoders, wherein the instructions, when executed, cause a processor to perform actions comprising:
-
receiving an event registration that describes a media event for which the system will receive media data from one or more encoders; requesting a manifest from each registered encoder that describes the media data available from the encoder; receiving an encoder manifest from each encoder; receiving a media fragment from an encoder; indexing the received media fragment and adding the index information to an index table that catalogs the available media fragments; archiving the received media fragment by storing the fragment and index information in a data store from which the fragment and index information can later be retrieved to satisfy client requests; and building a server manifest that includes information regarding a media event of which the media fragments are a part by adding information regarding the received fragment to the manifest. - View Dependent Claims (19, 20)
-
Specification