# US 10,313,721 B1 · Live streaming media content using on-demand manifests

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,313,721 B1
- Document ID: US10313721B1
- Status: Granted
- Kind: B1
- Application number: 15/190,037
- Filed: 2016-06-22
- Granted: 2019-06-04
- Earliest claimed: 2016-06-22
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Euan McLeod; Nicholas James Benson; Kenneth Thomas Burford; James Marvin Freeman, II; Stefan Christian Richter; Amarsingh Buckthasingh Winston
- Web page: https://patentgrep.com/patent/US10313721B1

## CPC

- H04N 21/2387: Stream processing in response to a playback request from an end-user, e.g. for trick-play
- H04L 65/611: for multicast or broadcast (systems for broadcast or conference H04L12/18; arrangements for broadcast or distribution combined with broadcast H04H20/00; arrangements for broadcast applications with a direct linkage to broadcast information or to broadcast space-time H04H60/00; selective distribution of broadcast services, e.g. multimedia broadcast multicast service [MBMS], H04W4/06)
- H04L 65/612: for unicast
- H04N 21/26258: {for generating a list of items to be played back in a given order, e.g. playlist, or scheduling item distribution according to such list (retrieval of multimedia data based on playlists G06F16/40)}
- H04N 21/8456: {by decomposing the content in the time domain, e.g. in time segments}
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## 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

### Claim 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.

### Claim 2 (depends on 1)

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.

### Claim 3 (depends on 2)

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.

### Claim 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.

### Claim 5 (depends on 4)

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.

### Claim 6 (depends on 4)

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.

### Claim 7 (depends on 6)

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

### Claim 8 (depends on 7)

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.

### Claim 9 (depends on 4)

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.

### Claim 10 (depends on 4)

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

### Claim 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.

### Claim 12 (depends on 11)

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.

### Claim 13 (depends on 11)

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.

### Claim 14 (depends on 13)

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.

### Claim 15 (depends on 14)

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.

### Claim 16 (depends on 11)

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.

### Claim 17 (depends on 11)

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