Peer-based cloud storage for media broadcasts
First Claim
1. A computer-implemented method, comprising:
- receiving, at a content storage system, a respective request from each of a plurality of client devices to record a media broadcast stream;
determining a series of chunking offsets for the media broadcast stream, each chunking offset defining a respective segment of the media broadcast stream;
providing the series of chunking offsets to the plurality of clients for purposes of generating a series of chunks each containing the respective segment of the media broadcast stream, each chunk further containing a hash generated using data for the respective segment;
determining, for each chunk of the series of chunks and based at least in part upon respective capabilities of the plurality of client devices, one or more client devices of the plurality of client devices to upload the chunk to the content storage system;
storing at least one copy of each chunk received from the one or more client devices;
causing a set of manifests to be stored for the plurality of client devices, each manifest indicating information for at least one chunk of the series of chunks, the information including the respective hash value for the chunk;
receiving, from a determined client device of the plurality of client devices, a download request to download the media broadcast stream for playback on the determined client device;
causing a first chunk of the media broadcast stream, determined using the at least one manifest, to be transcoded into a more space efficient format;
causing the first chunk to be downloaded to the determined client device from the content storage system if the first chunk is not already locally stored by the determined client device;
determining, for each additional chunk of the series of chunks for the media broadcast stream that is not already locally stored by the determined client device, whether to cause the additional chunk to be provided to the determined client device from the content storage service or from another client device of the plurality of client devices storing a copy of the additional chunk, at least a subset of the client devices in the plurality functioning as peers; and
causing, for each additional chunk of the media broadcast stream, the additional chunk to be pulled from local storage or to be provided to the determined client device from the content storage service or another client device storing a copy of the additional chunk.
1 Assignment
0 Petitions
Accused Products
Abstract
The recording of broadcast media can be performed by a network storage service even where a client is unable to provide a full copy of the media file. For example, a client might want to record a television broadcast by transmitting the content to a remote storage service. For a high definition format, however, the upload limitations of the data connection may prevent the full content from being uploaded from that client. Accordingly, clients recording the same content and using the same service can upload respective segments of the content, with each segment being provided by at least one of the clients and available for subsequent download. At least some of those clients can also store some of the segments such that those clients can act as peer sources for obtaining those segments.
-
Citations
20 Claims
-
1. A computer-implemented method, comprising:
-
receiving, at a content storage system, a respective request from each of a plurality of client devices to record a media broadcast stream; determining a series of chunking offsets for the media broadcast stream, each chunking offset defining a respective segment of the media broadcast stream; providing the series of chunking offsets to the plurality of clients for purposes of generating a series of chunks each containing the respective segment of the media broadcast stream, each chunk further containing a hash generated using data for the respective segment; determining, for each chunk of the series of chunks and based at least in part upon respective capabilities of the plurality of client devices, one or more client devices of the plurality of client devices to upload the chunk to the content storage system; storing at least one copy of each chunk received from the one or more client devices; causing a set of manifests to be stored for the plurality of client devices, each manifest indicating information for at least one chunk of the series of chunks, the information including the respective hash value for the chunk; receiving, from a determined client device of the plurality of client devices, a download request to download the media broadcast stream for playback on the determined client device; causing a first chunk of the media broadcast stream, determined using the at least one manifest, to be transcoded into a more space efficient format; causing the first chunk to be downloaded to the determined client device from the content storage system if the first chunk is not already locally stored by the determined client device; determining, for each additional chunk of the series of chunks for the media broadcast stream that is not already locally stored by the determined client device, whether to cause the additional chunk to be provided to the determined client device from the content storage service or from another client device of the plurality of client devices storing a copy of the additional chunk, at least a subset of the client devices in the plurality functioning as peers; and causing, for each additional chunk of the media broadcast stream, the additional chunk to be pulled from local storage or to be provided to the determined client device from the content storage service or another client device storing a copy of the additional chunk. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A computer-implemented method, comprising:
-
receiving a first request from a first client device to record a broadcast stream; determining a set of chunks corresponding to the broadcast stream, each chunk including a respective segment of the broadcast stream and a respective hash value; determining a first subset of the set of chunks for the first client device to upload based at least in part upon capabilities of the first client device; causing the first client device to upload at most the first subset of the set of chunks corresponding to the broadcast stream, a second subset of the set of chunks being provided from other client devices of a plurality of client devices for which the broadcast stream is being recorded; causing a plurality of manifests to be stored for the broadcast stream, the manifests including information for the set of chunks for the broadcast stream; receiving, from the first client device, a second request to download the broadcast stream; causing the set of chunks to be transcoded into a more space efficient format; and causing, according to at least a subset of the plurality of the manifests, chunks of the set of chunks to be downloaded to the first client device where those chunks are not already stored locally by the first client device. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A computer system, comprising:
-
at least one processor; and memory including instructions that, when executed by the at least one processor, cause the computer system to; receive a first request from a first client device to record a broadcast stream; determine a set of chunks corresponding to the broadcast stream, each chunk including a respective segment of the broadcast stream and a respective hash value; determine a first subset of the set of chunks for the first client device to upload based at least in part upon capabilities of the first client device; cause the first client device to upload at most the first subset of the set of chunks corresponding to the broadcast stream, a second subset of the set of chunks being provided from other client devices of a plurality of client devices for which the broadcast stream is being recorded; cause a plurality of manifests to be stored for the broadcast stream, the manifests including information for the set of chunks for the broadcast stream; receive, from the first client device, a second request to download the broadcast stream; cause the set of chunks to be transcoded into a more space efficient format; and cause, according to at least a subset of the plurality of the manifests, chunks of the set of chunks to be downloaded to the first client device where those chunks are not already stored locally by the first client device. - View Dependent Claims (17, 18, 19, 20)
-
Specification