IP Library Granted Patent US 10,033,787
Granted Patent B2
US 10,033,787 · App. 14/617,380 · Granted Jul 24, 2018

Dynamic virtual chunking of streaming media content

Inventors: David R. Ronca (Campbell, CA); Kay Neuenhofen (San Francisco, CA); James M. Zollinger (San Jose, CA)
Assignee: NETFLIX, INC.
H04L65/60H04L67/02H04N21/26258H04N21/47202H04N21/6587H04N21/8456
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,033,787
App. No.
14/617,380
Granted
Jul 24, 2018
Kind
B2
Abstract

Techniques are disclosed for a client device to stream a user-selected media file from a content server. The client device may create a playlist of dynamic virtual chunks to represent a single media stream file on a streaming media server. The playlist itself may be generated from an index in the header of a given stream defining what chunks, or segments of multiplexed audiovisual content, are present within that stream. The playlist of dynamic virtual chunks provides the playback engine on the client device with a list of individual files that may be requested from the streaming server independently of one another, despite the stream being stored on the server as a single media stream file.

Claims (38)

1. A computer-implemented method, comprising:

retrieving from a content server a header for a multiplexed audiovisual (AV) stream that includes an index identifying a plurality of virtual chunks of audiovisual data that comprise the multiplexed AV stream, wherein each chunk included in the plurality of virtual chunks is encoded at a distinct bit rate, wherein the multiplexed AV stream is associated with a plurality of single AV streams that are individually stored in the content server, and wherein each of the virtual chunks in the plurality of virtual chunks corresponds to a different portion of one of the plurality of single AV streams;

generating, based on the index, a playlist file that includes a list of unique resource locators (URLs) for retrieving the plurality of virtual chunks, wherein each URL included in the list is associated with a different virtual chunk included in the plurality of virtual chunks and specifies a starting byte offset and an ending byte offset for the associated virtual chunk within the multiplexed AV stream, wherein each of a first starting byte offset and a first ending byte offset specified by a given URL identifies a different byte of a given portion of one of the plurality of single AV streams corresponding to a given virtual chunk associated with the given URL; and

passing the playlist to a playback engine that is configured to download each virtual chunk included in the plurality of virtual chunks via the URL corresponding to the virtual chunk.

2. The computer-implemented method of claim 1 , further comprising:

requesting, using one of the URLs included in the list, at least a first chunk of AV data; and

storing the first chunk of AV data in a buffer that resides within a client device.

3. The computer-implemented method of claim 2 , further comprising:

retrieving the first chunk of AV data from the buffer; and

decoding the first chunk of AV data for playback.

4. The computer-implemented method of claim 1 , wherein one or more of the URLs in the list reference a sub-playlist, wherein the sub-playlist includes a second plurality of URLs, and at least one URL in the sub-playlist references a first chunk of AV data encoded at the distinct bit rate.

5. The computer-implemented method of claim 1 , wherein the playlist is formatted as an M3U playlist.

6. The computer-implemented method of claim 1 , wherein the playlist is further formatted as HTTP Live Streaming playlist.

7. The computer-implemented method of claim 1 , wherein passing the playlist to the playback engine comprises generating a URL referencing the playlist, and wherein the playlist is served to the playback engine over a local web-server executing on the client device.

8. A non-transitory computer-readable storage medium including instructions that, when executed by a processing unit, cause the processing unit to perform an operation for streaming a media file to a client device, the operation comprising:

retrieving from a content server a header for a multiplexed audiovisual (AV) stream that includes an index identifying a plurality of virtual chunks of audiovisual data that comprise the multiplexed AV stream, wherein each chunk included in the plurality of virtual chunks is encoded at a distinct bit rate, wherein the multiplexed AV stream is associated with a plurality of single AV streams that are individually stored in the content server, and wherein each of the virtual chunks in the plurality of virtual chunks corresponds to a different portion of one of the plurality of single AV streams;

generating, based on the index, a playlist file that includes a list of unique resource locators (URLs) for retrieving the plurality of virtual chunks, wherein each URL included in the list is associated with a different virtual chunk included in the plurality of virtual chunks and specifies a starting byte offset and an ending byte offset for the associated virtual chunk within the multiplexed AV stream, wherein each of a first starting byte offset and a first ending byte offset specified by a given URL identifies a different byte of a given portion of one of the plurality of single AV streams corresponding to a given virtual chunk associated with the given URL; and

passing the playlist to a playback engine that is configured to download each virtual chunk included in the plurality of virtual chunks via the URL corresponding to the virtual chunk.

9. The non-transitory computer-readable storage medium of claim 8 , wherein the operation further comprises:

requesting, using one of the URLs included in the list, at least a first chunk of AV data; and

storing the first chunk of AV data in a buffer that resides within a client device.

10. The non-transitory computer-readable storage medium of claim 9 , wherein the operation further comprises:

retrieving the first chunk of AV data from the buffer; and

decoding the first chunk of AV data for playback.

11. The non-transitory computer-readable storage medium of claim 8 , wherein one or more of the URLs in the list reference a sub-playlist, wherein the sub-playlist includes a second plurality of URLs, and at least one URL in the sub-playlist reference a first chunk of AV data encoded at the distinct bit rate.

12. The non-transitory computer-readable storage medium of claim 8 , wherein the playlist is formatted as an M3U playlist.

13. The non-transitory computer-readable storage medium of claim 8 , wherein the playlist is further formatted as HTTP Live Streaming playlist.

14. The non-transitory computer-readable storage medium of claim 8 , wherein passing the playlist to the playback engine comprises generating a URL referencing the playlist, and wherein the playlist is served to the playback engine over a local web-server executing on the client device.

15. A content player device, comprising:

a memory that includes a media player and playback engine; and

a processor that is coupled to the memory,

wherein, when the processor executes the media player, the processor is configured to:

retrieve from a content server a header for a multiplexed audiovisual (AV) stream that includes an index identifying a plurality of virtual chunks of audiovisual data that comprise the multiplexed AV stream, wherein each chunk included in the plurality of virtual chunks is encoded at a distinct bit rate, wherein the multiplexed AV stream is associated with a plurality of single AV streams that are individually stored in the content server, and wherein each of the virtual chunks in the plurality of virtual chunks corresponds to a different portion of one of the plurality of single AV streams;

generate, based on the index, a playlist file that includes a list of unique resource locators (URLs) for retrieving the plurality of virtual chunks, wherein each URL included in the list is associated with a different virtual chunk included in the plurality of virtual chunks and specifies a starting byte offset and an ending byte offset for the associated virtual chunk within the multiplexed AV stream, wherein each of a first starting byte offset and a first ending byte offset specified by a given URL identifies a different byte of a given portion of one of the plurality of single AV streams corresponding to a given virtual chunk associated with the given URL; and

pass the playlist to the playback engine, and

wherein, when the processor executes the playback engine, the processor is configured to:

download each virtual chunk included in the plurality of virtual chunks via the URL corresponding to the chunk.

16. The content player device of claim 15 , further comprising a display device coupled to the processor and through which one or more portions of the multiplexed AV stream are displayed.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 4, 2016
From: RONCA, DAVID R.; NEUENHOFEN, KAY; ZOLLINGER, JAMES M.
To: NETFLIX, INC.
Reel/Frame 040224/0592 →
Continuity (2)
Continuation 12753761 · Apr 2, 2010
Related Publication 20150156240A1 · Jun 4, 2015
Cited By (3)
US 12,284,406 US 12,532,008 US 12,689,753