IP Library › Granted Patent US 10,313,721
Granted Patent B1
US 10,313,721 · App. 15/190,037 · Granted Jun 4, 2019

Live streaming media content using on-demand manifests

Inventors: Euan McLeod (Columbia, MO); Nicholas James Benson (Seattle, WA); Kenneth Thomas Burford (Seattle, WA); James Marvin Freeman, II (Mercer Island, WA); Stefan Christian Richter (Seattle, WA); Amarsingh Buckthasingh Winston (Seattle, WA)
Assignee: Amazon Technologies, Inc.
H04N21/2387H04L65/4069H04L65/4084H04N21/47208H04N21/47217
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,313,721
App. No.
15/190,037
Granted
Jun 4, 2019
Kind
B1
Abstract

Techniques are described for live streaming media content using on-demand manifests. Many manifest files providing playback options for different time periods of a live stream of media content can be generated and provided to viewer devices. Requests from viewer devices using the manifest files can be analyzed to determine a fragment to be provided for playback in relation to the time period of the live stream to be provided for playback.

Claims (59)

1. A computer implemented method comprising:

generating, by a media server, a first manifest file for a live stream of media content, the first manifest file indicating fragments of the live stream of the media content available for playback, the fragments represented as providing playback within a first manifest time period representing a static time duration of playback of the fragments represented in the first manifest file and corresponding to a first portion of a playback timeline of the live stream, the first manifest file having an initial fragment with a time code representing zero, the initial fragment of the first manifest corresponding to a live stream fragment with a non-zero time code in the playback timeline of the live stream;

receiving, by the media server, a first request from a first viewer device for playback of the live stream of the media content;

providing, by the media server, the first manifest file to the first viewer device;

providing, by the media server, a first playback offset to the first viewer device, the first playback offset indicating a fragment represented in the first manifest file to start playback of the live stream at a time corresponding to a live playhead representing a current playback time into the playback timeline of the live stream of the media content;

receiving, by the media server, a first request from the first viewer device for a fragment based on the first playback offset and the first manifest file, the first request indicating a first fragment time corresponding to the fragment indicated in the first request and within the first manifest time period;

determining, by the media server, that the first viewer device is playing back the live stream using the first manifest file;

determining, by the media server, a static time offset to the first fragment time based on determining that the first viewer device is playing back the live stream using the first manifest file;

converting, by the media server, the first fragment time within the first manifest time period to a first live stream fragment time within the playback timeline of the live stream based in part on adding the static time offset to the first fragment time;

providing, by the media server, a first live stream fragment to the first viewer device for playback of the live stream, the first live stream fragment corresponding to the first live stream fragment time;

receiving, by the media server, a subsequent request from the first viewer device for a subsequent fragment represented in the first manifest file, the subsequent request indicating a subsequent fragment time corresponding to the subsequent fragment indicated in the subsequent request and within the first manifest time period, wherein the first fragment time and the subsequent fragment time correspond to different times within the first manifest time period;

determining, by the media server, a subsequent live stream fragment time within the playback timeline of the live stream based on the subsequent fragment time within the first manifest time period based in part on adding the static time offset to the subsequent fragment time; and

providing, by the media server, a subsequent live stream fragment to the first viewer device, the subsequent live stream fragment corresponding to the subsequent live stream fragment time.

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

generating, by a media server, a second manifest file for the live stream of media content, the second manifest file indicating fragments of the live stream of the media content available for playback, the fragments represented as providing playback within a second manifest time period representing a static time duration of playback of the fragments represented in the second manifest file and corresponding to a second portion of the playback timeline of the live stream, the first portion and the second portion of the playback timeline being different;

receiving, by the media server, a second request from a second viewer device for playback of the live stream of the media content; and

providing, by the media server, the second manifest file to the second viewer device.

3. The computer implemented method of claim 2 , wherein the first portion and the second portion overlap in relation to the playback timeline of the live stream.

4. A system comprising:

one or more processors and memory configured to:

generate first manifest data for a live stream of media content, the first manifest data indicating fragments of the live stream of the media content available for playback within a first manifest time period representing a static time duration of playback of the fragments, the first manifest data having an initial fragment with a time code representing zero, the initial fragment of the first manifest data corresponding to a live stream fragment with a non-zero time code in a playback timeline of the live stream;

provide the first manifest data to a first viewer device;

receive a first request from the first viewer device for a fragment represented in the first manifest data, the first request indicating a first fragment time corresponding to the fragment indicated in the first request and within the first manifest time period;

determine that the first viewer device is playing back the live stream using the first manifest data;

determine a static time offset to the first fragment time based on determining that the first viewer device is playing back the live stream using the first manifest data;

determine a first live stream fragment time within the playback timeline of the live stream based on the first fragment time within the first manifest time period based in part on adding the static time offset to the first fragment time;

provide a first live stream fragment to the first viewer device, the first live stream fragment corresponding to the first live stream fragment time;

receive a subsequent request from the first viewer device for a subsequent fragment represented in the first manifest data, the subsequent request indicating a subsequent fragment time corresponding to the subsequent fragment indicated in the subsequent request and within the first manifest time period, wherein the first fragment time and the subsequent fragment time correspond to different times within the first manifest time period;

determine a subsequent live stream fragment time within the playback timeline of the live stream based on the subsequent fragment time within the first manifest time period based in part on adding the static time offset to the subsequent fragment time; and

provide a subsequent live stream fragment to the first viewer device, the subsequent live stream fragment corresponding to the subsequent live stream fragment time.

5. The system of claim 4 , the one or more processors and memory configured to:

provide a playback offset to the first viewer device, the playback offset indicating a fragment represented in the first manifest data to start playback of the live stream at a time corresponding to a live playhead representing a current playback time into the playback timeline of the live stream of the media content, and wherein the first fragment time is based on the playback offset.

6. The system of claim 4 , the one or more processors and memory configured to:

generate a second manifest data for a live stream of media content, the second manifest data indicating fragments of the live stream of the media content available for playback within a second manifest time period representing a static time duration of playback of the fragments, wherein the fragments of the first manifest data correspond to a first portion of the playback timeline of the live stream, the fragments of the second manifest data correspond to a second portion of the playback time of the live stream, the first portion and the second portion being different portions of the playback time of the live stream; and

provide the second manifest data to a second viewer device.

7. The system of claim 6 , wherein the first portion and the second portion overlap in relation to the playback timeline of the live stream.

8. The system of claim 7 , wherein the first manifest data is provided based on receiving a first request from the first viewer device at a first request time, the second manifest data is provided based on receiving a second request from the second viewer device at a second request time, the first request time at a time during the playback timeline of the live stream before the overlap between the first portion and the second portion, the second request time at a time during the overlap.

9. The system of claim 4 , wherein the fragments represented in the first manifest data include fragments available for playback following a time corresponding to a live playhead representing a current playback time into the playback timeline of the live stream of the media content.

10. The system of claim 4 , wherein the first manifest time period is less than the playback timeline of the live stream.

11. A computer program product comprising one or more non-transitory computer-readable media having computer instructions stored therein, the computer program instructions being configured such that, when executed by one or more computing devices, the computer program instructions cause the one or more computing devices to:

generate first manifest data for a live stream of media content, the first manifest data indicating fragments of the live stream of the media content available for playback within a first manifest time period representing a static time duration of playback of the fragments, the first manifest data having an initial fragment with a time code representing zero, the initial fragment of the first manifest data corresponding to a live stream fragment with a non-zero time code in a playback timeline of the live stream;

provide the first manifest data to a first viewer device;

receive a first request from the first viewer device for a fragment represented in the first manifest data, the first request indicating a first fragment time corresponding to the fragment indicated in the first request and within the first manifest time period;

determine that the first viewer device is playing back the live stream using the first manifest data;

determine a static time offset to the first fragment time based on determining that the first viewer device is playing back the live stream using the first manifest data;

determine a first live stream fragment time within the playback timeline of the live stream based on the first fragment time within the first manifest time period based in part on adding the static time offset to the first fragment time;

provide a first live stream fragment to the first viewer device, the first live stream fragment corresponding to the first live stream fragment time;

receive a subsequent request from the first viewer device for a subsequent fragment represented in the first manifest data, the subsequent request indicating a subsequent fragment time corresponding to the subsequent fragment indicated in the subsequent request and within the first manifest time period, wherein the first fragment time and the subsequent fragment time correspond to different times within the first manifest time period;

determine a subsequent live stream fragment time within the playback timeline of the live stream based on the subsequent fragment time within the first manifest time period based in part on adding the static time offset to the subsequent fragment time; and

provide a subsequent live stream fragment to the first viewer device, the subsequent live stream fragment corresponding to the subsequent live stream fragment time.

12. The computer program product of claim 11 , wherein the computer program instructions cause the one or more computing devices to:

provide a playback offset to the first viewer device, the playback offset indicating a fragment represented in the first manifest data to start playback of the live stream at a time corresponding to a live playhead representing a current playback time into the playback timeline of the live stream of the media content, and wherein the first fragment time is based on the playback offset.

13. The computer program product of claim 11 , wherein the computer program instructions cause the one or more computing devices to:

generate a second manifest data for a live stream of media content, the second manifest data indicating fragments of the live stream of the media content available for playback within a second manifest time period representing a static time duration of playback of the fragments, wherein the fragments of the first manifest data correspond to a first portion of the playback timeline of the live stream, the fragments of the second manifest data correspond to a second portion of the playback time of the live stream, the first portion and the second portion being different portions of the playback time of the live stream; and

provide the second manifest data to a second viewer device.

14. The computer program product of claim 13 , wherein the first portion and the second portion overlap in relation to the playback timeline of the live stream.

15. The computer program product of claim 14 , wherein the first manifest data is provided based on receiving a first request from the first viewer device at a first request time, the second manifest data is provided based on receiving a second request from the second viewer device at a second request time, the first request time at a time during the playback timeline of the live stream before the overlap between the first portion and the second portion, the second request time at a time during the overlap.

16. The computer program product of claim 11 , wherein the fragments represented in the first manifest data include fragments available for playback following a time corresponding to a live playhead representing a current playback time into the playback timeline of the live stream of the media content.

17. The computer program product of claim 11 , wherein the first manifest time period is less than the playback timeline of the live stream.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2016
From: MCLEOD, EUAN; BENSON, NICHOLAS JAMES; BURFORD, KENNETH THOMAS; FREEMAN, JAMES MARVIN, II; RICHTER, STEFAN CHRISTIAN; WINSTON, AMARSINGH BUCKTHASINGH
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 038995/0863 →
Cited By (4)
US 12,190,915 US 12,223,019 US 12,235,842 US 12,666,115