IP Library Granted Patent US 10,506,235
Granted Patent B2
US 10,506,235 · App. 14/852,480 · Granted Dec 10, 2019

Distributed control of video encoding speeds

Inventors: Michael Hamilton Coward (Solano Beach, CA); Amit Puntambekar (Fremont, CA); Randall Eugene Rizun (Carlsbad, CA)
Assignee: Facebook, Inc.
H04N19/139H04N19/115H04N19/14H04N19/177H04N19/436
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,506,235
App. No.
14/852,480
Granted
Dec 10, 2019
Kind
B2
Abstract

Video encoding operation is performed in a distributed video encoding system to meet a service layer agreement such as a target time for completion of the video encoding operation. Each of multiple videos being encoded is split into smaller jobs corresponding to video segments of the videos. The jobs are processed according to a job queue. The sequence of jobs in the job queue is periodically updated such that jobs corresponding to each video are processed within the corresponding target encoding time.

Claims (44)

1. A computer-implemented method, implemented at a server in a distributed network of servers, comprising:

receiving at least a portion of a video;

associating a target encoding speed with the video;

splitting the portion into multiple overlapping video segments;

submitting a first number of segments from the multiple overlapping video segments to a video encoding pipeline that includes segments from at least one other video, wherein the submitting additionally provides a number of frames to skip from encoding for each of the first number of segments, wherein the video encoding pipeline operates to issue video segments to encoding nodes for video encoding in a priority order;

comparing an encoding speed of the first number of segments with the target encoding speed; and

based on the comparing, dynamically determining a second number of segments from the multiple overlapping video segments to submit to the video encoding pipeline such that, when the encoding speed is less than the target encoding speed, the second number of segments is determined to be more than the first number of segments, and when the encoding speed is greater than the target encoding speed, then the second number of segments is determined to be less than the first number of segments.

2. The computer-implemented method of claim 1 , wherein the dynamically determining is performed in response to a target encoding time budget for the video and an encoding latency in the distributed network of servers.

3. The computer-implemented method of claim 1 , wherein encoding of the video is started after encoding of the at least one other video and the encoding of the video is finished before the encoding of the at least one other video.

4. The computer-implemented method of claim 1 , wherein the splitting operation includes splitting the portion into the multiple overlapping video segments such that each video segment includes at least one key frame.

5. The computer-implemented method of claim 4 , wherein at least some of the multiple overlapping video segments include at least one frame occurring temporally prior to the at least one key frame.

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

issuing to the encoding nodes occurs prior to receiving an entirety of the video at the server.

7. The computer-implemented method of claim 1 , wherein the multiple overlapping video segments of the video and the segments from the at least one other video include a same number of video frames.

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

selecting, based on a video encoding load, the one of the encoding nodes to which the at least one of the multiple overlapping video segments is sent using adjusted queue submission.

9. A non-transitory computer-readable medium storing instructions that, upon execution, cause at least one computer processor to perform a method comprising:

receiving at least a portion of a video;

associating a target encoding speed with the video;

splitting the portion into multiple overlapping video segments;

submitting a first number of segments from the multiple overlapping video segments to a video encoding pipeline that includes segments from at least one other video, wherein the submitting additionally provides a number of frames to skip from encoding for each of the first number of segments, wherein the video encoding pipeline operates to issue video segments to encoding nodes for video encoding in a priority order;

comparing an encoding speed of the first number of segments with the target encoding speed; and

based on the comparing, dynamically determining a second number of segments from the multiple overlapping video segments to submit to the video encoding pipeline such that when the encoding speed is less than the target encoding speed, then the second number of segments is determined to be more than the first number of segments, and when the encoding speed is greater than the target encoding speed, then the second number of segments is determined to be less that the first number of segments.

10. The non-transitory computer-readable medium of claim 9 , further comprising:

changing the priority order in response to a target encoding time budget for the video and an encoding latency in a distributed network of servers.

11. The non-transitory computer-readable medium of claim 9 , wherein encoding of the video is started after encoding of the at least one other video and the encoding of the video is finished before the encoding of the at least one other video.

12. The non-transitory computer-readable medium of claim 9 , wherein the splitting includes splitting the portion into the multiple overlapping video segments such that each video segment includes at least one key frame.

13. The non-transitory computer-readable medium of claim 12 , wherein at least some of the multiple overlapping video segments include at least one frame occurring temporally prior to the at least one key frame.

14. The non-transitory computer-readable medium of claim 9 , further comprising:

issuing to the encoding node include instructions for sending prior to receiving an entirety of the video at a server.

15. A computer system, comprising:

at least one processor;

at least one memory comprising instructions configured to cause the at least one processor to perform a method, comprising:

receiving at least a portion of a video;

associating a target encoding speed with the video;

splitting the portion into multiple overlapping video segments;

submitting a first number of segments from the multiple overlapping video segments to a video encoding pipeline that includes segments from at least one other video, wherein the submitting additionally provides a number of frames to skip from encoding for each of the first number of segments, wherein the video encoding pipeline operates to issue video segments to encoding nodes for video encoding in a priority order;

comparing an encoding speed of the first number of segments with the target encoding speed; and

based on the comparing, dynamically determining a second number of segments from the multiple overlapping video segments to submit to the video encoding pipeline such that when the encoding speed is less than the target encoding speed, then the second number of segments is determined to be more than the first number of segments, and when the encoding speed is greater than the target encoding speed, then the second number of segments is determined to be less that the first number of segments.

16. The computer system of claim 15 , wherein the priority order is changed in response to a target encoding time budget for the video and an encoding latency in a distributed network of servers.

17. The computer system of claim 15 , wherein encoding of the video is started after encoding of the at least one other video and the encoding of the video is finished before the encoding of the at least one other video.

18. The computer system of claim 17 , wherein the splitting includes splitting the portion into the multiple overlapping video segments such that each video segment includes at least one key frame.

19. The computer system of claim 18 , wherein at least some of the multiple overlapping video segments include at least one frame occurring temporally prior to the at least one key frame.

20. The computer system of claim 19 , wherein the video segments are submitted to the encoding node prior to receiving an entirety of the video at a server.

Assignments (2)
CHANGE OF NAME Recorded Dec 1, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058294/0215 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2015
From: COWARD, MICHAEL HAMILTON; PUNTAMBEKAR, AMIT; RIZUN, RANDALL EUGENE
To: FACEBOOK, INC.
Reel/Frame 036861/0530 →
Continuity (1)
Related Publication 20170078680A1 · Mar 16, 2017
Cited By (1)
US 12,248,689