Variant streams for real-time or near real-time streaming to provide failover protection
First Claim
1. A machine implemented method comprising:
- requesting data, with a client device, over a network using a transfer protocol;
receiving, in response to the requesting, a playlist comprising a plurality of tags and a plurality of Uniform Resource Identifiers (URIs) indicating a first playlist file and a second playlist file, wherein one or more of the plurality of tags indicates a first URI associated with the first playlist file and specifying a first location for a stream of content and a second URI associated with the second playlist file and specifying a second location for the stream of content, wherein the second location is different from, but at least partially redundant of, the first location;
selecting, with the client device, the first playlist file or the second playlist file;
using the transfer protocol, requesting the selected first or second playlist file with the client device, wherein the requesting uses a URI from the playlist corresponding to the selected playlist file;
receiving, with the client device, the requested playlist file, the requested playlist file having URIs indicating segments of the stream of content and a plurality of tags having parameters related to playback of the segments of the stream of content, wherein the segments of the stream of content provide media for playback on the client device;
using the transfer protocol, requesting one or more of the segments in an order indicated by the requested playlist file;
receiving the one or more requested segments over the network using the transfer protocol.
0 Assignments
0 Petitions
Accused Products
Abstract
Methods and apparatuses provide real-time or near real-time streaming of content using transfer protocols such as an HTTP compliant protocol. In one embodiment, a method includes providing multiple redundant locations that provide media content to client devices using alternative streams. To implement failover protection, a first server device or first content distribution service creates a stream, or multiple alternate bandwidth streams and generates playlist file(s). A second server device or second content distribution service creates a parallel stream, or set of streams. A client attempts to download the playlist file(s) from a first uniform resource locator (URL) using a first stream associated with the first server device or the first content distribution service. If a client is unable to download the playlist file(s) from the first URL, the client attempts to switch to an alternate stream associated with another URL.
216 Citations
18 Claims
-
1. A machine implemented method comprising:
requesting data, with a client device, over a network using a transfer protocol; receiving, in response to the requesting, a playlist comprising a plurality of tags and a plurality of Uniform Resource Identifiers (URIs) indicating a first playlist file and a second playlist file, wherein one or more of the plurality of tags indicates a first URI associated with the first playlist file and specifying a first location for a stream of content and a second URI associated with the second playlist file and specifying a second location for the stream of content, wherein the second location is different from, but at least partially redundant of, the first location; selecting, with the client device, the first playlist file or the second playlist file; using the transfer protocol, requesting the selected first or second playlist file with the client device, wherein the requesting uses a URI from the playlist corresponding to the selected playlist file; receiving, with the client device, the requested playlist file, the requested playlist file having URIs indicating segments of the stream of content and a plurality of tags having parameters related to playback of the segments of the stream of content, wherein the segments of the stream of content provide media for playback on the client device; using the transfer protocol, requesting one or more of the segments in an order indicated by the requested playlist file; receiving the one or more requested segments over the network using the transfer protocol. - View Dependent Claims (2, 3, 4, 5)
-
6. A non-transitory computer-readable medium programmed with processor-executable instructions that, when executed, cause one or more processors to perform a machine implemented method comprising:
-
requesting data, with a client device, over a network using a transfer protocol; receiving, in response to the requesting, a playlist comprising a plurality of tags and a plurality of Uniform Resource Identifiers (URIs) indicating a first playlist file and a second playlist file, wherein one or more of the plurality of tags indicates a first URI associated with the first playlist file and specifying a first location for a stream of content and a second URI associated with the second playlist file and specifying a second location for the stream of content, wherein the second location is different from, but at least partially redundant of, the first location; selecting, with the client device, the first playlist file or the second playlist file; using the transfer protocol, requesting the selected first or second playlist file with the client device, wherein the requesting uses a URI from the playlist corresponding to the selected playlist file; receiving, with the client device, the requested playlist file, the requested playlist file having URIs indicating segments of the stream of content and a plurality of tags having parameters related to playback of the segments of the stream of content, wherein the segments of the stream of content provide media for playback on the client device; using the transfer protocol, requesting one or more of the segments in an order indicated by the requested playlist file; receiving the one or more requested segments over the network using the transfer protocol. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A system comprising:
-
a processing system programmed with executable instructions that, when executed, perform a machine implemented method comprising; requesting data, with a client device, over a network using a transfer protocol; receiving, in response to the requesting, a playlist comprising a plurality of tags and a plurality of Uniform Resource Identifiers (URIs) indicating a first playlist file and a second playlist file, wherein one or more of the plurality of tags indicates a first URI associated with the first playlist file and specifying a first location for a stream of content and a second URI associated with the second playlist file and specifying a second location for the stream of content, wherein the second location is different from, but at least partially redundant of, the first location; selecting, with the client device, the first playlist file or the second playlist file; using the transfer protocol, requesting the selected first or second playlist file with the client device, wherein the requesting uses a URI from the playlist corresponding to the selected playlist file; receiving, with the client device, the requested playlist file, the requested playlist file having URIs indicating segments of the stream of content and a plurality of tags having parameters related to playback of the segments of the stream of content, wherein the segments of the stream of content provide media for playback on the client device; using the transfer protocol, requesting one or more of the segments in an order indicated by the requested playlist file; receiving the one or more requested segments over the network using the transfer protocol. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A non-transitory computer-readable medium programmed with processor-executable instructions that, when executed, cause one or more processors to perform a machine implemented method comprising:
-
receiving, at a server device, a request for a variant playlist, the request being received from a network; transmitting, in response to the receiving, the variant playlist over the network using a transfer protocol that is an HTTP (hypertext transfer protocol) compliant protocol, wherein the variant playlist comprises a plurality of tags and a plurality of Uniform Resource Identifiers (URIs) indicating a first playlist file and a second playlist file, wherein one or more of the plurality of tags indicates a first URI associated with the first playlist file and specifying a first location for a stream of content and a second URI associated with the second playlist file and specifying a second location for the stream of content, wherein the second location is different from, but at least partially redundant of, the first location, and wherein an order of URIs in the variant playlist specifies the order in which a client device requests playlists from redundant locations; receiving at the server device a request of the first playlist file from the client device, the requesting coming over the network through the transfer protocol; transmitting, from the server device, the first playlist file to the client device over the network through the transfer protocol, the first playlist file having URIs indicating segments of the stream of content and a plurality of tags having parameters related to playback of the segments of the stream of content. - View Dependent Claims (17, 18)
-
Specification