IP Library Granted Patent US 10,771,527
Granted Patent B2
US 10,771,527 · App. 16/222,069 · Granted Sep 8, 2020

Caching and streaming of digital media content subsets

Inventor: Stephen Basile (San Francisco, CA)
Assignee: Fastly, Inc.
H04L65/60H04L65/4084H04L65/605H04L67/2842H04N21/2343H04N21/23106H04W4/18
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,771,527
App. No.
16/222,069
Granted
Sep 8, 2020
Kind
B2
Abstract

Systems, methods, apparatuses, and software for provide a digital media caching environment are provided herein. In one example, a method of operating a content node to provide a digital media caching environment is provided. The method includes receiving a request transferred by an end user device for digital media content. Responsive to the request, the method includes retrieving at least a header portion and a content subset of the digital media content from an origin server and transmuxing the content subset of the digital media content from an origin format into a stream format suitable for streaming to the end user device, and streaming the content subset in the stream format for delivery to the end user device.

Claims (94)

1. A method comprising:

providing a digital media caching environment using a cache node, including:

receiving a request from an end user device for a selected portion of digital media content in a first format;

responsive to the request from the end user, identifying an origin server acting as a persistent storage location for an original media file comprising the selected portion of digital media content;

retrieving a header corresponding to the original media file, the header comprising metadata for the original media file;

identifying an origin format of the original media file at least from the header;

processing the header to identify a byte range of the digital media content corresponding to the selected portion;

retrieving the selected portion from the origin server using the byte range;

responsive to the request from the end user, transmuxing the selected portion of the digital media content from the origin format into the first format and providing the selected portion to the end user device in the first format;

storing the selected portion in the first format to a cache memory of the cache node;

receiving a subsequent request for the selected portion in a second format;

transmuxing a copy of the selected portion from the cache memory from the first format to the second format and providing the content in the second format in response to the subsequent request; and

storing the selected portion in the second format to the cache memory.

2. The method of claim 1 , further comprising:

issuing at least a first Hypertext Transfer Protocol (HTTP) range request to the origin server to retrieve the header portion and issuing at least a second HTTP range request for delivery to the origin server to retrieve the selected portion.

3. The method of claim 1 , further comprising:

the first format is a stream format suitable for streaming to the end user device;

retrieving a second portion of the digital media content from the origin server;

transmuxing the second portion from the origin format into the first format; and

streaming the second portion in the stream format to the end user device.

4. The method of claim 1 , further comprising:

caching the selected portion in the first format in a storage system of the cache node; and

responsive to a second request from a second end user device for the digital media content, providing the selected portion in the first format to the second end user device.

5. The method of claim 1 further comprising:

sending the selected portion in the first format to the origin server for storage.

6. A cache node comprising:

a communication interface configured to exchange data over a network;

a nonvolatile storage medium;

a processing system configured to:

receive a request, via the communication interface, from an end user device for a selected portion of digital media content in a first format;

responsive to the request from the end user device, identify an origin server acting as a persistent storage location for an original media file comprising the selected portion of digital media content;

retrieve, via the communication interface, a header corresponding to the original media content, the header comprising metadata for the original media file;

identify an origin format of the original media file from the header;

process the header portion to identify a byte range of the digital media content corresponding to the selected portion;

retrieve the selected portion from the origin server using the byte range;

transmux the selected portion of the digital media content from the origin format into the first format;

providing the selected portion to the end user device in the first format via the communication interface;

store the selected portion in the first format to the nonvolatile storage medium;

receive a subsequent request, via the communication interface, for the selected portion in a second format;

transmux a copy of the selected portion from the nonvolatile storage medium from the first format to the second format;

provide the content in the second format in response to the subsequent request; and

store the selected portion in the second format to the nonvolatile storage medium.

7. The cache node of claim 6 , further comprising:

the processing system configured to issue at least a first Hypertext Transfer Protocol (HTTP) range request to the origin server to retrieve the header portion and issue at least a second HTTP range request to the origin server to retrieve the selected portion.

8. The cache node of claim 6 , further comprising:

the processing system configured to:

retrieve, via the communication interface, a second portion of the digital media content from the origin server;

transmux the second portion from the origin format into the first format; and

providing, via the communication interface, the second portion in the first format to the end user device.

9. The cache node of claim 6 , comprising the processing system further configured to:

receive, via the communication interface, a second request from a second end user device for the selected portion of digital media content;

retrieve the selected portion in the first format from the nonvolatile storage medium; and

provide the selected portion to the second end user device.

10. The cache node of claim 6 , comprising the processing system further configured to send, via the communication interface, the selected portion in the first format to the origin server for storage.

11. The cache node of claim 6 , further comprising:

the subsequent request is for a second portion of the digital media content that includes the selected portion and additional portions;

the processing system further configured to:

process the header to identify a second byte range of the digital media content corresponding to the additional portions;

retrieve the additional portions from the origin server using the second byte range;

transmux the additional portions from the origin format into the second format;

provide, via the communication interface, the additional portions in the second format in response to the subsequent request; and

cache the additional portions in the second format to the nonvolatile storage medium.

12. A data storage device storing instructions that, when executed, cause a processor to perform a method comprising:

operating a cache node of a content distribution network, including:

receiving a request from an end user device for a selected portion of digital media content in a first format;

responsive to the request from the end user, identifying an origin server acting as a persistent storage location for an original media file comprising the selected portion of digital media content;

retrieving a header corresponding to the original media file, the header comprising metadata for the original media file;

identifying an origin format of the original media file at least from the header;

processing the header portion to identify a byte range of the digital media content corresponding to the selected portion;

retrieving the selected portion from the origin server using the byte range;

responsive to the request from the end user device, transmuxing the selected portion of the digital media content from the origin format into the first format and providing the selected portion to the end user device in the first format;

storing the selected portion in the first format to a cache memory of the cache node;

receiving a subsequent request for the selected portion in a second format;

transmuxing a copy of the selected portion from the cache memory from the first format to the second format and providing the content in the second format in response to the subsequent request; and

storing the selected portion in the second format to the cache memory.

13. The data storage device of claim 12 storing instructions that, when executed, cause a processor to perform the method further including:

issuing at least a first Hypertext Transfer Protocol (HTTP) range request to the origin server to retrieve the header and issuing at least a second HTTP range request for delivery to the origin server to retrieve the selected portion.

14. The data storage device of claim 13 storing instructions that, when executed, cause a processor to perform the method:

wherein the first format is a stream format suitable for streaming to the end user device;

the method further including:

retrieving a second portion of the digital media content from the origin server;

transmuxing the second portion from the origin format into the stream format; and

streaming the second portion in the stream format to the end user device.

15. The data storage device of claim 14 storing instructions that, when executed, cause a processor to perform the method further including:

caching the selected portion in the first format in a storage system of the cache node; and

responsive to a second request from a second end user device for the digital media content, providing the selected portion in the first format to the second end user device.

16. The data storage device of claim 15 storing instructions that, when executed, cause a processor to perform the method further including:

sending the selected portion in the first format to the origin server for storage.

17. The data storage device of claim 15 storing instructions that, when executed, cause a processor to perform the method further including:

the subsequent request is for a second portion of the digital media content that includes the selected portion and additional portions;

processing the header to identify a second byte range of the digital media content corresponding to the additional portions;

retrieving the additional portions from the origin server using the second byte range;

transmuxing the additional portions from the origin format into the second format and providing the additional portions in the second format in response to the subsequent request; and

caching the additional portions in the second format.

Assignments (2)
SECURITY INTEREST Recorded Feb 17, 2021
From: FASTLY, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AND COLLATERAL AGENT
Reel/Frame 055316/0616 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 17, 2018
From: BASILE, STEPHEN
To: FASTLY INC.
Reel/Frame 047795/0407 →
Continuity (3)
Continuation 14263494 · Apr 28, 2014
Provisional Application 61934053 · Jan 31, 2014
Related Publication 20190199766A1 · Jun 27, 2019