IP Library › Granted Patent US 10,812,559
Granted Patent B2
US 10,812,559 · App. 15/409,231 · Granted Oct 20, 2020

Just-in-time variable adaptive encoding and delivery of media content

Inventors: Benjamin Forman (Hertfordshire, GB); Joseph Michael Pavey (Issaquah, WA); Bobby Castleberry (Seattle, WA); Ravindra Ganti (Sammamish, WA); Stephen Han (Seattle, WA); Euan McLeod (Columbia, MO); Gaurav Saxena (Seattle, WA); Nathaniel Stewart (Seattle, WA); Yongjun Wu (Bellevue, WA)
Assignee: Amazon Technologies, Inc.
H04L65/607H04L43/0894H04L47/822H04L65/4084H04L65/608H04N21/2343H04N21/2402H04N21/6377H04N21/64322H04N21/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,812,559
App. No.
15/409,231
Granted
Oct 20, 2020
Kind
B2
Abstract

Techniques are described for just-in-time variable adaptive encoding and delivery of media content. Fragments of media content are encoded at bitrates corresponding to available bandwidth of client devices. If the available bandwidth changes, the bitrate at which fragments are being encoded is adjusted to correspond with the changed bandwidth.

Claims (90)

1. A computer-implemented method, comprising:

receiving a request from a first client device for a portion of first media content;

receiving a request from a second client device for a portion of second media content;

determining a complexity associated with the portion of the first media content;

determining a complexity associated with the portion of the second media content;

determining available bandwidth of the first client device;

determining available bandwidth of the second client device;

determining available resources of one or more media servers communicating with the first client device and the second client device;

selecting a first bitrate according to the available bandwidth of the first client device, the complexity associated with the portion of the first media content, the complexity associated with the portion of the second media content, and the available resources of the one or more media servers;

selecting a second bitrate according to the available bandwidth of the second client device, the complexity associated with the portion of the second media content, the complexity associated with the portion of the first media content, and the available resources of the one or more media servers; using a first encoder, encoding a first fragment corresponding to the portion of the first media content at the first bitrate;

determining available resources of a second encoder;

based on the available resources of the second encoder and using the second encoder, encoding a second fragment corresponding to the portion of second media content at the second bitrate;

providing the first fragment to the first client device;

providing the second fragment to the second client device

receiving an additional request for an additional portion of the first media content, the additional portion of the first media content being next in a playback sequence to the portion of the first media content;

determining an additional available bandwidth of the first client device; and

using the second encoder, encoding a third fragment corresponding to the additional portion of the first media content, the third fragment being encoded at a third bitrate based at least in part on the additional available bandwidth, the third bitrate being different from the first bitrate, thereby using two different encoders to encode successive portions of the first media content; and

providing the third fragment to the first client device.

2. The method of claim 1 , further comprising determining further available resources of the one or more media servers, and wherein transitioning encoding of the third fragment to the second encoder is based on the further available computing resources of the one or more media servers.

3. The method of claim 1 , wherein determining the available resources of the one or more media servers includes:

determining a complexity associated with a portion of third media content; and

determining a total complexity based on the complexity associated with the portion of the first media content, the complexity associated with the portion of the second media content, and the complexity associated with the portion of the third media content.

4. The method of claim 1 , wherein the first fragment includes a time range of the first fragment, a quality level of the first fragment, a media server identifier, and a Uniform Resource Locator (URL) of the first fragment.

5. A system, comprising:

one or more processors and memory configured to:

receive a first request from a first client device for a first portion of media content;

determine a first available bandwidth of the first client device;

responsive to determination of the first available bandwidth of the first client device, and using a first encoder, encode a first fragment corresponding to the first portion of the media content, the first fragment being encoded at a first bitrate based at least in part on the first available bandwidth;

provide the first fragment to the first client device;

receive a second request from the first client device for a second portion of the media content, the second portion of the media content being next in a playback sequence to the first portion of the media content;

determine a second available bandwidth of the first client device, the second available bandwidth being different from the first available bandwidth;

responsive to determination of the second available bandwidth of the first client device and based on available resources of a second encoder, using the second encoder to encode a second fragment corresponding to the second portion of the media content, the second fragment being encoded at a second bitrate based at least in part on the second available bandwidth, the second bitrate being different from the first bitrate, thereby using two different encoders to encode successive portions of the media content; and

provide the second fragment to the first client device.

6. The system of claim 5 , wherein the one or more processors and memory are further configured to:

determine a complexity associated with the first fragment; and

determine a complexity associated with the second fragment, wherein the complexity of the second fragment is different than the complexity of the first fragment; and

wherein the one or more processors and memory are configured to encode the second fragment additionally responsive to the determination that the complexity associated with the second fragment is different than the complexity associated with the first fragment.

7. The system of claim 5 , wherein the one or more processors and memory are further configured to:

receive a request from a second client device for the first portion of the media content;

determine available bandwidth of the second client device, the available bandwidth of the second client device being different from the first available bandwidth of the first client device; and

using a third encoder, encode a third fragment corresponding to the first portion of the media content, the third fragment being encoded at a third bitrate different from the first bitrate.

8. The system of claim 5 , wherein the first encoder and the second encoder are associated with one or more media servers, and wherein the one or more processors and memory are further configured to transition encoding of the media content from the first encoder to the second encoder based on available computing resources of the one or more media servers.

9. The system of claim 5 , wherein the one or more processors and memory are further configured to:

receive a third request from the first client device for a third portion of the media content;

receive a request from a second client device for playback of a fourth portion of the media content;

determine a complexity associated with the third portion of the media content;

determine a complexity associated with the fourth portion of the media content;

determine a third available bandwidth of the first client device;

determine available resources of one or more media servers; and

encode a third fragment corresponding to the third portion of the media content, the third fragment being encoded at a third bitrate based on the third available bandwidth, the complexity associated with the third portion of the media content, the complexity associated with the fourth portion of the media content, and the available resources of the one or more media servers.

10. The system of claim 5 , wherein the first fragment includes a time range of the first fragment, a quality level of the first fragment, a media server identifier, and a URL of the first fragment, and wherein the second request for the second portion of the media content includes the media server identifier of the first fragment.

11. The system of claim 5 , wherein the one or more processors and memory are configured to determine the first available bandwidth of the first client device using historical bandwidth availability data representing an average available bandwidth of a plurality of prior determinations of available bandwidth of the first client device.

12. The system of claim 5 , wherein the one or more processors and memory are further configured to:

receive a third request from the first client device for a third portion of the media content;

determine a third available bandwidth of the first client device;

determine that a third fragment corresponding to the third portion of the media content is stored in a cache associated with one or more media servers, the third fragment being encoded at a third bitrate corresponding to the third available bandwidth, the third fragment being stored in the cache based on a previous request from a second device; and

provide the third fragment to the first client device.

13. A computer-implemented method, comprising:

receiving a first request from a first client device for a first portion of media content;

determining a first available bandwidth of the first client device;

responsive to determination of the first available bandwidth of the first client device, and using a first encoder, encoding a first fragment corresponding to the first portion of the media content, the first fragment being encoded at a first bitrate based at least in part on the first available bandwidth;

providing the first fragment to the first client device;

receiving a second request from the first client device for a second portion of the media content, the second portion of the media content being next in a playback sequence to the first portion of the media content;

determining a second available bandwidth of the first client device, the second available bandwidth being different from the first available bandwidth;

responsive to determination of the second available bandwidth of the first client device and based on available resources of a second encoder, using the second encoder to encode a second fragment corresponding to the second portion of the media content, the second fragment being encoded at a second bitrate based at least in part on the second available bandwidth, the second bitrate being different from the first bitrate, thereby using two different encoders to encode successive portions of the media content; and

providing the second fragment to the first client device.

14. The method of claim 13 , further comprising:

determining a complexity associated with the first fragment; and

determining a complexity associated with the second fragment, wherein the complexity of the second fragment is different than the complexity of the first fragment; and

wherein encoding the second fragment is additionally responsive to determination that the complexity associated with the second fragment is different than the complexity associated with the first fragment.

15. The method of claim 13 , further comprising:

receiving a request from a second client device for the first portion of the media content;

determining available bandwidth of the second client device, the available bandwidth of the second client device being different from the first available bandwidth of the first client device; and

using a third encoder, encoding a third fragment corresponding to the first portion of the media content, the third fragment being encoded at a third bitrate different from the first bitrate.

16. The method of claim 13 , wherein the first encoder and the second encoder are associated with one or more media servers, and wherein the method further comprises transitioning encoding of the media content from the first encoder to the second encoder based on available computing resources of the one or more media servers.

17. The method of claim 13 , further comprising:

receiving a third request from the first client device for a third portion of the media content;

receiving a request from a second client device for playback of a fourth portion of the media content;

determining a complexity associated with the third portion of the media content;

determining a complexity associated with the fourth portion of the media content;

determining a third available bandwidth of the first client device;

determining available resources of one or more media servers; and

encoding a third fragment corresponding to the third portion of the media content, the third fragment being encoded at a third bitrate based on the third available bandwidth, the complexity associated with the third portion of the media content, the complexity associated with the fourth portion of the media content, and the available resources of the one or more media servers.

18. The method of claim 13 , wherein the first fragment includes a time range of the first fragment, a quality level of the first fragment, a media server identifier, and a URL of the first fragment, and wherein the second request for the second portion of the media content includes the media server identifier of the first fragment.

19. The method of claim 13 , wherein determining the first available bandwidth of the first client device includes using historical bandwidth availability data representing an average available bandwidth of a plurality of prior determinations of available bandwidth of the first client device.

20. The method of claim 13 , further comprising:

receiving a third request from the first client device for a third portion of the media content;

determining a third available bandwidth of the first client device;

determining that a third fragment corresponding to the third portion of the media content is stored in a cache associated with one or more media servers, the third fragment being encoded at a third bitrate corresponding to the third available bandwidth, the third fragment being stored in the cache based on a previous request from a second device; and

providing the third fragment to the first client device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 18, 2017
From: FORMAN, BENJAMIN; PAVEY, JOSEPH MICHAEL; CASTLEBERRY, BOBBY; GANTI, RAVINDRA; HAN, STEPHEN; MCLEOD, EUAN; SAXENA, GAURAV; STEWART, NATHANIEL; WU, YONGJUN
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 041010/0336 →
Continuity (1)
Related Publication 20180205778A1 · Jul 19, 2018