Method and system for HTTP-based stream delivery
First Claim
1. A method of streaming in a content delivery network (CDN) having a set of interconnected machines, comprising:
- recording a stream by the following sub-steps;
receiving at an entry point a stream in a source format;
converting the stream into an intermediate format (IF), wherein the intermediate format is an internal format for transporting and storing the stream within the CDN and comprises a stream manifest, a set of one or more fragment indexes (FI), and a set of IF fragments that, within the CDN, are individually managed from one another, the intermediate format being distinct from the source format; and
archiving, in an archiver, a predetermined number of the IF fragments of the stream in the intermediate format in association with a current fragment index, the predetermined number of the IF fragments of the stream adapted for live playback, wherein, as the predetermined number of the IF fragments of the stream age-out, the current fragment index is closed and the predetermined number of the IF fragments associated therewith are then transferred to and stored in a storage system associated with the CDN and distinct from the archiver, the archiving operation being repeated continuously as the stream continues to be received; and
playing the stream by the following sub-steps;
in response to receipt at an edge server process of a request for the stream or a portion thereof, retrieving the stream manifest and at least one fragment index to the edge server process;
using the fragment index, retrieving to the edge server process the IF fragments, wherein the IF fragments are retrieved (i) from the archiver when the request is for a portion of the stream that is then available for live playback, or (ii) from the storage system when the at least one fragment index is associated with any IF fragments that were previously transferred to and stored in the distinct storage system;
converting the IF fragments to a target format, the target format also being distinct from the intermediate format; and
serving the stream in the target format via HTTP.
2 Assignments
0 Petitions
Accused Products
Abstract
A method of delivering a live stream is implemented within a content delivery network (CDN) and includes the high level functions of recording the stream using a recording tier, and playing the stream using a player tier. The step of recording the stream includes a set of sub-steps that begins when the stream is received at a CDN entry point in a source format. The stream is then converted into an intermediate format (IF), which is an internal format for delivering the stream within the CDN and comprises a stream manifest, a set of one or more fragment indexes (FI), and a set of IF fragments. The player process begins when a requesting client is associated with a CDN HTTP proxy. In response to receipt at the HTTP proxy of a request for the stream or a portion thereof, the HTTP proxy retrieves (either from the archive or the data store) the stream manifest and at least one fragment index. Using the fragment index, the IF fragments are retrieved to the HTTP proxy, converted to a target format, and then served in response to the client request. The source format may be the same or different from the target format. Preferably, all fragments are accessed, cached and served by the HTTP proxy via HTTP. In another embodiment, a method of delivering a stream on-demand (VOD) uses a translation tier (in lieu of the recording tier) to manage the creation and/or handling of the IF components.
-
Citations
11 Claims
-
1. A method of streaming in a content delivery network (CDN) having a set of interconnected machines, comprising:
-
recording a stream by the following sub-steps; receiving at an entry point a stream in a source format; converting the stream into an intermediate format (IF), wherein the intermediate format is an internal format for transporting and storing the stream within the CDN and comprises a stream manifest, a set of one or more fragment indexes (FI), and a set of IF fragments that, within the CDN, are individually managed from one another, the intermediate format being distinct from the source format; and archiving, in an archiver, a predetermined number of the IF fragments of the stream in the intermediate format in association with a current fragment index, the predetermined number of the IF fragments of the stream adapted for live playback, wherein, as the predetermined number of the IF fragments of the stream age-out, the current fragment index is closed and the predetermined number of the IF fragments associated therewith are then transferred to and stored in a storage system associated with the CDN and distinct from the archiver, the archiving operation being repeated continuously as the stream continues to be received; and playing the stream by the following sub-steps; in response to receipt at an edge server process of a request for the stream or a portion thereof, retrieving the stream manifest and at least one fragment index to the edge server process; using the fragment index, retrieving to the edge server process the IF fragments, wherein the IF fragments are retrieved (i) from the archiver when the request is for a portion of the stream that is then available for live playback, or (ii) from the storage system when the at least one fragment index is associated with any IF fragments that were previously transferred to and stored in the distinct storage system; converting the IF fragments to a target format, the target format also being distinct from the intermediate format; and serving the stream in the target format via HTTP. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. Apparatus, comprising:
-
a set of interconnected machines, each machine comprising a processor, and computer memory for holding computer program instructions that when executed by the processor facilitate a method of HTTP-based delivery of a stream, the method comprising; converting the stream from a source format into an intermediate format (IF), wherein the intermediate format is an internal format for transporting and storing the stream within the set of interconnected machines, the intermediate format comprising a stream manifest, a set of one or more fragment indexes (FI), and a set of IF fragments that, within the set of interconnected machines, are individually managed from one another and optimally sized for caching, the intermediate format being distinct from the source format; storing, in an archiver, the stream manifest, the set of one or more fragment indexes, and the set of IF fragments, wherein IF fragments associated with at least an aged-out portion of the stream are stored in a separate storage distinct from the archiver, the archiver storing IF fragments representing a live playback of the stream; in response to receipt of a request for the stream or a portion thereof, retrieving the stream manifest and at least one fragment index; using the fragment index, retrieving, via HTTP, one or more IF fragments, wherein when the request is for a portion of the stream that is then available for live playback the at least one IP fragment is retrieved from the archiver, and when the request is for a portion of the stream that is not then available for live playback at least one IF fragment is retrieved from the separate storage instead of the archiver; converting the retrieved IF fragments to a target format, the target format also being distinct from the intermediate format; and serving, via HTTP, the stream in the target format in response to the request for the stream or the portion thereof. - View Dependent Claims (8, 9, 10, 11)
-
Specification