Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
First Claim
1. A computer-implemented method, comprising:
- constructing, at a media ingestion system, media blocks and forward error correction (FEC) blocks, wherein the FEC blocks correspond to data in the media blocks;
determining a file structure, using the media ingestion system, for naming one or more media files containing the media blocks and one or more FEC files containing the FEC blocks according to a derivable pattern derivable at a client device;
receiving a first request from the client device for a first media file that is usable by the client device to provide a media presentation;
responding to the first request by initiating transmission of the first media file;
receiving a second request from the client device for a second media file that is usable by the client device to provide additional portions of the media presentation;
responding to the second request by initiating transmission of the second media file prior to completion of the response to the first request;
receiving a third request from the client device for an FEC file that is usable by the client device to recover portions of either the first media file or the second media file not yet received by the client device; and
responding to the third request by initiating transmission of the FEC file prior to completion of the response to the first request and prior to completion of the response to the second request.
2 Assignments
0 Petitions
Accused Products
Abstract
A block-request streaming system provides for improvements in the user experience and bandwidth efficiency of such systems, typically using an ingestion system that generates data in a form to be served by a conventional file server (HTTP, FTP, or the like), wherein the ingestion system intakes content and prepares it as files or data elements to be served by the file server, which might or might not include a cache. A client device can be adapted to take advantage of the ingestion process as well as including improvements that make for a better presentation independent of the ingestion process. In the block-request streaming system, the an ingestion system generates data according to erasure codes and the client device, through various selection and timing of requests for media data and redundant data, can efficiently decode media to provide for presentations.
467 Citations
17 Claims
-
1. A computer-implemented method, comprising:
-
constructing, at a media ingestion system, media blocks and forward error correction (FEC) blocks, wherein the FEC blocks correspond to data in the media blocks; determining a file structure, using the media ingestion system, for naming one or more media files containing the media blocks and one or more FEC files containing the FEC blocks according to a derivable pattern derivable at a client device; receiving a first request from the client device for a first media file that is usable by the client device to provide a media presentation; responding to the first request by initiating transmission of the first media file; receiving a second request from the client device for a second media file that is usable by the client device to provide additional portions of the media presentation; responding to the second request by initiating transmission of the second media file prior to completion of the response to the first request; receiving a third request from the client device for an FEC file that is usable by the client device to recover portions of either the first media file or the second media file not yet received by the client device; and responding to the third request by initiating transmission of the FEC file prior to completion of the response to the first request and prior to completion of the response to the second request. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. An apparatus, comprising:
-
a processor configured to; construct media blocks and forward error correction (FEC) blocks, wherein the FEC blocks correspond to data in the media blocks; and determine a file structure for naming one or more media files containing the media blocks and one or more FEC files containing the FEC blocks according to a derivable pattern derivable at a client device; and a receiver configured to receive a first request from the client device for a first media file that is usable by the client device to provide a media presentation; wherein the processor is configured to respond to the first request by initiating transmission of the first media file; wherein the receiver is configured to receive a second request from the client device for a second media file that is usable by the client device to provide additional portions of the media presentation; wherein the processor is configured to respond to the second request by initiating transmission of the second media file prior to completion of the response to the first request; wherein the receiver is configured to receive a third request from the client device for an FEC file that is usable by the client device to recover portions of either the first media file or the second media file not yet received by the client device; and wherein the processor is configured to respond to the third request by initiating transmission of the FEC file prior to completion of the response to the first request and prior to completion of the response to the second request. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. One or more computer-readable media storing computer-executable instructions that, when executed, cause one or more computing devices to:
-
construct media blocks and forward error correction (FEC) blocks, wherein the FEC blocks correspond to data in the media blocks; determine a file structure for naming one or more media files containing the media blocks and one or more FEC files containing the FEC blocks according to a derivable pattern derivable at the client device; receive a first request from the client device for a first media file that is usable by the client device to provide a media presentation; respond to the first request by initiating transmission of the first media file; receive a second request from the client device for a second media file that is usable by the client device to provide additional portions of the media presentation; respond to the second request by initiating transmission of the second media file prior to completion of the response to the first request; receive a third request from the client device for an FEC file that is usable by the client device to recover portions of either the first media file or the second media file not yet received by the client device; and respond to the third request by initiating transmission of the FEC file prior to completion of the response to the first request and prior to completion of the response to the second request.
-
Specification