Using worker nodes in a distributed video encoding system
First Claim
Patent Images
1. A computer-implemented method, implemented at a server in a distributed network, comprising:
- receiving a video for encoding;
associating the video with a target encoding time;
splitting the video into multiple segments;
determining, for each of the multiple segments, one of an encoding implementation from central processing unit (CPU)-based encoding and graphics processing unit (GPU)-based encoding, wherein the determining is performed by analyzing the multiple segments using factors including target resolution and quality considerations;
queuing a number of the multiple segments for which CPU-based encoding is determined in a CPU-queue and a number of the multiple segments for which GPU-based encoding is determined in a GPU-queue, wherein the CPU-queue and the GPU-queue includes segments from at least one other video, and wherein the number of the multiple segments to be queued is dynamically adjusted based on encoding progress relative to the target encoding time;
submitting the segments from the CPU-queue and the GPU-queue to a pool of worker nodes for encoding on a priority order based on monitoring of completion speed of the video, wherein each segment is submitted to a worker node at least comprising a CPU resource capable of CPU-based encoding and a GPU resource capable of GPU-based encoding based on a run-time availability of the resource of the worker node with the corresponding encoding implementation, wherein the run-time availability is determined by comparing an available CPU resource or GPU resource with a threshold;
instructing, for each submitted segment, a corresponding resource of the worker node to encode the submitted segment based on the corresponding determined encoding implementation; and
receiving encoded segments from the worker nodes.
2 Assignments
0 Petitions
Accused Products
Abstract
Various of the disclosed embodiments relate to a distributed video encoding or transcoding system may utilize multiple encoding nodes to encode a video sequence by splitting the video into multiple smaller video segments. The assignment of video segments to the encoding nodes is performed to balance the use of the encoding nodes by selecting a node based on its encoding capabilities, e.g., whether the node employed a central processing unit (CPU) based encoding or a graphics processor unit (GPU) based encoding.
-
Citations
20 Claims
-
1. A computer-implemented method, implemented at a server in a distributed network, comprising:
-
receiving a video for encoding; associating the video with a target encoding time; splitting the video into multiple segments; determining, for each of the multiple segments, one of an encoding implementation from central processing unit (CPU)-based encoding and graphics processing unit (GPU)-based encoding, wherein the determining is performed by analyzing the multiple segments using factors including target resolution and quality considerations; queuing a number of the multiple segments for which CPU-based encoding is determined in a CPU-queue and a number of the multiple segments for which GPU-based encoding is determined in a GPU-queue, wherein the CPU-queue and the GPU-queue includes segments from at least one other video, and wherein the number of the multiple segments to be queued is dynamically adjusted based on encoding progress relative to the target encoding time; submitting the segments from the CPU-queue and the GPU-queue to a pool of worker nodes for encoding on a priority order based on monitoring of completion speed of the video, wherein each segment is submitted to a worker node at least comprising a CPU resource capable of CPU-based encoding and a GPU resource capable of GPU-based encoding based on a run-time availability of the resource of the worker node with the corresponding encoding implementation, wherein the run-time availability is determined by comparing an available CPU resource or GPU resource with a threshold; instructing, for each submitted segment, a corresponding resource of the worker node to encode the submitted segment based on the corresponding determined encoding implementation; and receiving encoded segments from the worker nodes. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A non-transitory computer-readable medium storing instructions that, upon execution, cause at least one computer processor to perform a method, the instructions comprising:
-
instructions for receiving a video for encoding; instructions for associating the video with a target encoding time; instructions for splitting the video into multiple segments; instructions for determining, for each of the multiple segments, one of an encoding implementation from central processing unit (CPU)-based encoding and graphics processing unit (GPU)-based encoding, wherein the determining is performed by analyzing the multiple segments using factors including target resolution and quality considerations; instructions for queuing a number of the multiple segments for which CPU-based encoding is determined in a CPU-queue and a number of the multiple segments for which GPU-based encoding is determined in a GPU-queue, wherein the CPU-queue and the GPU-queue includes segments from at least one other video, and wherein the number of the multiple segments to be queued is dynamically adjusted based on encoding progress relative to the target encoding time; instructions for submitting the segments from the CPU-queue and the GPU-queue to a pool of worker nodes for encoding on a priority order based on monitoring of completion speed of the video, wherein each segment is submitted to a worker node at least comprising a CPU resource capable of CPU-based encoding and a GPU resource capable of GPU-based encoding based on a run-time availability of the resource of the worker node with the corresponding encoding implementation, wherein the run-time availability is determined by comparing an available CPU resource or GPU resource with a threshold; instructions for instructing, for each submitted segment, a corresponding resource of the worker node to encode the submitted segment based on the corresponding determined encoding implementation; and instructions for receiving encoded segments from the worker nodes. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
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 a video for encoding; associating the video with a target encoding time; splitting the video into multiple segments; determining, for each of the multiple segments, one of an encoding implementation from central processing unit (CPU)-based encoding and graphics processing unit (GPU)-based encoding, wherein the determining is performed by analyzing the multiple segments using factors including target resolution and quality considerations; queuing a number of the multiple segments for which CPU-based encoding is determined in a CPU-queue and a number of the multiple segments for which GPU-based encoding is determined in a GPU-queue, wherein the CPU-queue and the GPU-queue includes segments from at least one other video, and wherein the number of the multiple segments to be queued is dynamically adjusted based on encoding progress relative to the target encoding time; submitting the segments from the CPU-queue and the GPU-queue to a pool of worker nodes for encoding on a priority order based on monitoring of completion speed of the video, wherein each segment is submitted to a worker node at least comprising a CPU resource capable of CPU-based encoding and a GPU resource capable of GPU-based encoding based on a run-time availability of the resource of the worker node with the corresponding encoding implementation, wherein the run-time availability is determined by comparing an available CPU resource or GPU resource with a threshold; instructing, for each submitted segment, a corresponding resource of the worker node to encode the submitted segment based on the corresponding determined encoding implementation; and receiving encoded segments from the worker nodes. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification