Caching and streaming of digital media content subsets
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.
1. A method of operating a content node to provide a digital media caching environment, the method comprising:
receiving, by the content node, a request transferred by an end user device for digital media content;
retrieving, by the content node, a header portion for the digital media content from an origin server;
caching, by the content node, the header portion for the digital media content;
processing, by the content node, the header portion to determine a content subset of the digital media content that is associated with the request, wherein the content subset is a byte range corresponding to the request;
retrieving, by the content node, the content subset from the origin server and transmuxing the content subset of the digital media content into a stream format suitable for rendering by the end user device;
caching, by the content node, the retrieved content in its transmuxed format;
receiving a subsequent request for digital media content, wherein the subsequent request comprises a request for content in a second stream format;
processing, by the content node, the cached header portion to determine a subsequent content subset of the digital media content that is associated with the subsequent request for digital media content, wherein the second content subset comprises: a byte range corresponding to a portion of the cached transmuxed content, and non-cached content that precedes the cached transmuxed content;
re-transmuxing the portion of the cached transmuxed content corresponding to the subsequent request into the second stream format;
retrieving, by the content node, the non-cached content from the origin server, and transmuxing the non-cached content into the second stream format; and
streaming, by the content node, the re-transmuxed content corresponding to the second content subset in the second stream format, and the non-cached content retrieved from the origin server in the second stream format.
2. The method of claim 1 , wherein the header portion comprises a header of a file of the digital media content, and wherein the content subset comprises a byte range of media content included in the file of the digital media content.
3. The method of claim 1 , further comprising:
issuing at least a first Hypertext Transfer Protocol (HTTP) range request for delivery 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 content subset.
4. The method of claim 1 , wherein the digital media content comprises a video, a live broadcast, or an audio file.
5. The method of claim 1 , wherein the content subset of the digital media content comprises a timewise portion of the digital media content.
6. A content node comprising:
one or more non-transitory computer readable storage media;
a processing system communicatively coupled to the one or more non-transitory computer readable media;
program instructions stored on the one or more non-transitory computer readable storage media that, when read and executed by the processing system, direct the processing system to:
retrieve, by the content node, a request transferred by an end user device for digital media content;
retrieve, by the content node, a header portion of the digital media content from an origin server;
cache, by the content node, the header portion for the digital media content;
process, by the content node, the header portion to determine a content subset of the digital media content that is associated with the request, wherein the content subset is a byte range corresponding to the request;
retrieve, by the content node, the content subset of the digital media content and transmux the content subset of the digital media content into a stream format suitable for rendering by the end user device;
cache, by the content node, the retrieved content in its transmuxed format;
retrieve a subsequent request for digital media content, wherein the subsequent request comprises a request for content in a second stream format;
process, by the content node, the cached header portion to determine a subsequent content subset of the digital media content that is associated with the subsequent request for digital media content, wherein the second content subset comprises: a byte range corresponding to a portion of the cached transmuxed content, and non-cached content that precedes the cached transmuxed content;
re-transmux the portion of the cached transmuxed content corresponding to the subsequent request into the second stream format;
retrieve, by the content node, the non-cached content from the origin server, and transmux the non-cached content into the second stream format; and
stream, by the content node, the re-transmuxed content corresponding to the second content subset in the second stream format, and the non-cached content retrieved from the origin server in the second stream format.
7. The content node of claim 6 , wherein the header portion comprises a header of a file of the digital media content, and wherein the content subset comprises a byte range of media content included in the file of the digital media content.
8. The content node of claim 6 , wherein the program instructions further direct the processing system to issue at least a first Hypertext Transfer Protocol (HTTP) range request for delivery to the origin server to retrieve the header portion and issue at least a second HTTP range request for deliver to the origin server to retrieve the content subset.
9. The content node of claim 6 , wherein the digital media content comprises a video, a live broadcast, or an audio file.
10. The content node of claim 6 , wherein the content subset of the digital media content comprises a timewise portion of the digital media content.