IP Library Granted Patent US 10,599,609
Granted Patent B1
US 10,599,609 · App. 14/674,527 · Granted Mar 24, 2020

Method and system for elastic, distributed transcoding

Inventors: Mats N. Wahlstrom (Lakewood Ranch, FL); Nalinkumar N. Mistry (Ottawa, CA); Jiale Huo (Kanata, CA)
Assignee: EMC IP Holding Company LLC
G06F16/116G06F16/113H04L65/60
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,599,609
App. No.
14/674,527
Granted
Mar 24, 2020
Kind
B1
Abstract

Example embodiments of the present invention relate to a method and a system for transcoding a media file in an elastic storage infrastructure. The method includes ingesting the media file from intermediate storage, transcoding the media file to one or more output formats in the elastic storage infrastructure, and packaging the one or more transcoded media files for distribution via a content delivery network.

Claims (91)

1. A computer implemented method for transcoding a plurality of media files using a transcoding farm comprising:

ingesting, by the transcoding farm, a plurality of media files from intermediate storage, wherein the transcoding farm includes a virtual data center having elastic resources;

transcoding, by the transcoding farm, the plurality of media files in parallel to a plurality of output formats in an elastic storage infrastructure; and

packaging, by the transcoding farm, the plurality of transcoded media files for distribution via a content delivery network;

wherein ingesting the plurality of media files from the intermediate storage comprises receiving a plurality of transcoding processing jobs and managing the plurality of transcoding jobs utilizing a first job queue for pending transcoding jobs and at least a second job queue for working transcoding jobs;

wherein transcoding the plurality of media files in parallel to the plurality of output formats in the elastic storage infrastructure comprises:

selecting a given one of the transcoding jobs in the first job queue;

assigning the given transcoding job to a given set of resources providing a given virtual transcoder instance in the elastic storage infrastructure;

moving the given transcoding job from the first job queue to the second job queue;

utilizing the given virtual transcoder instance to transcode one or more of the plurality of media files in the given transcoding job;

receiving a notification from the given virtual transcoder instance that the given transcoding job is completed;

removing the given transcoding job from the second queue; and

releasing the given set of resources providing the given virtual transcoder instance in the elastic storage infrastructure for use in dynamically instantiating one or more additional virtual transcoder instances for one or more other ones of the plurality of transcoding jobs in the first queue; and

wherein assigning the given transcoding job to the given set of resources providing the given virtual transcoder instance in the elastic storage infrastructure comprises:

identifying a set of performance requirements for the given transcoding job;

determining whether the elastic storage infrastructure has sufficient available resources to meet the set of performance requirements for the given transcoding job;

responsive to determining that the elastic storage infrastructure has sufficient available resources to meet the set of performance requirements for the given transcoding job, dynamically instantiating the given virtual transcoder instance utilizing a subset of the available resources in the elastic storage infrastructure; and

responsive to determining that the elastic storage infrastructure does not have sufficient available resources to meet the set of performance requirements for the given transcoding job, provisioning additional resources in the elastic storage infrastructure and dynamically instantiating the given virtual transcoder instance utilizing the additional resources provisioned in the elastic storage infrastructure.

2. The method of claim 1 wherein the transcoding the plurality of media files to the plurality of output formats in the elastic storage infrastructure comprises performing pre-transcoding service provider operations, transcoding, and post-transcoding service provider operations in the elastic storage infrastructure.

3. The method of claim 2 wherein the transcoding the plurality of media files to the plurality of output formats in the elastic storage infrastructure further comprises:

submitting a respective transcoding job for each output format;

copying the media files from the intermediate storage to a working storage in the elastic storage infrastructure; and

processing each transcoding job in a respective dynamically instantiated virtual transcoder instance in the elastic storage infrastructure.

4. The method of claim 3 wherein processing each transcoding job in a respective one of the dynamically instantiated virtual transcoder instances in the elastic storage infrastructure comprises managing operation and provisioning of elastic storage infrastructure resources.

5. The method of claim 4 wherein managing operation and provisioning of elastic storage infrastructure resources comprises tracking a status of each respective transcoding job.

6. The method of claim 3 wherein processing each transcoding job in a respective dynamically instantiated virtual transcoder instance in the elastic storage infrastructure comprises:

receiving a first notification from the elastic storage infrastructure that copying the media file from the intermediate storage to the working storage in the elastic storage infrastructure is complete;

sending a command to start transcoding the media file; and

receiving a second notification from the elastic storage infrastructure that transcoding each of the media files is complete.

7. The method of claim 1 wherein ingesting a media file from intermediate storage for transcoding comprises:

receiving the media file from a content provider; and

storing the media file to intermediate storage.

8. The method of claim 7 wherein ingesting a media file from intermediate storage for transcoding further comprises:

retrieving the media file from the intermediate storage;

performing pre-transcoding service provider operations on the media file; and

copying the media file to mezzanine storage for archival.

9. The method of claim 1 wherein packaging the one or more transcoded media files for distribution via a content delivery network comprises:

storing the one or more transcoded media files to mezzanine storage for archival;

performing post-transcoding service provider operations on one or more of the one or more transcoded media files; and

storing the one or more transcoded media file to content delivery network origin storage.

10. A system for transcoding a plurality of media files comprising:

a transcoding farm comprising a virtual data center having elastic resources, the transcoding farm being configured:

to ingest a plurality of media files in parallel from an intermediate storage;

to transcode the plurality of media files a plurality of output formats in an elastic storage infrastructure; and

to package the plurality of transcoded media files for distribution via a content delivery network;

wherein ingesting the plurality of media files from the intermediate storage comprises receiving a plurality of transcoding processing jobs and managing the plurality of transcoding jobs utilizing a first job queue for pending transcoding jobs and at least a second job queue for working transcoding jobs;

wherein transcoding the plurality of media files in parallel to the plurality of output formats in the elastic storage infrastructure comprises:

selecting a given one of the transcoding jobs in the first job queue;

assigning the given transcoding job to a given set of resources providing a given virtual transcoder instance in the elastic storage infrastructure;

moving the given transcoding job from the first job queue to the second job queue;

utilizing the given virtual transcoder instance to transcode one or more of the plurality of media files in the given transcoding job;

receiving a notification from the given virtual transcoder instance that the given transcoding job is completed;

removing the given transcoding job from the second queue; and

releasing the given set of resources providing the given virtual transcoder instance in the elastic storage infrastructure for use in dynamically instantiating one or more additional virtual transcoder instances for one or more other ones of the plurality of transcoding jobs in the first queue; and

wherein assigning the given transcoding job to the given set of resources providing the given virtual transcoder instance in the elastic storage infrastructure comprises:

identifying a set of performance requirements for the given transcoding job;

determining whether the elastic storage infrastructure has sufficient available resources to meet the set of performance requirements for the given transcoding job;

responsive to determining that the elastic storage infrastructure has sufficient available resources to meet the set of performance requirements for the given transcoding job, dynamically instantiating the given virtual transcoder instance utilizing a subset of the available resources in the elastic storage infrastructure; and

responsive to determining that the elastic storage infrastructure does not have sufficient available resources to meet the set of performance requirements for the given transcoding job, provisioning additional resources in the elastic storage infrastructure and dynamically instantiating the given virtual transcoder instance utilizing the additional resources provisioned in the elastic storage infrastructure.

11. The system of claim 10 wherein the transcoding farm is further configured to perform pre-transcoding service provider operations and post-transcoding service provider operations in the elastic storage infrastructure.

12. The system of claim 11 wherein the transcoding farm is further configured to:

submit a respective transcoding job for each output format; and

copy the media file from the intermediate storage to a working storage in the elastic storage infrastructure and process each transcoding job in a respective dynamically instantiated virtual transcoder instance in the elastic storage infrastructure.

13. The system of claim 12 wherein the transcoding farm is further configured to manage operation and provisioning of elastic storage infrastructure resources.

14. The system of claim 13 wherein the transcoding farm is further configured to track a status of each respective transcoding job.

15. The system of claim 12 wherein the transcoding farm is further configured to receive a first notification from the elastic storage infrastructure that copying the media file from the intermediate storage to the working storage in the elastic storage infrastructure is complete, send a command to start transcoding the media file, and receive a second notification from the elastic storage infrastructure that transcoding the media file is complete.

16. The system of claim 10 wherein the transcoding farm is further configured to receive the media file from a content provider and store the media file to intermediate storage.

17. The system of claim 16 wherein the transcoding farm is further configured:

to perform pre-transcoding service provider operations on the media file; and

to retrieve the media file from the intermediate storage and copy the transcoded media file to mezzanine storage for archival.

18. The system of claim 10 wherein the transcoding farm is further configured:

to perform post-transcoding service provider operations on one or more of the one or more transcoded media files; and

to store the one or more transcoded media files to mezzanine storage for archival and store the one or more transcoded media file to content delivery network origin storage.

19. A computer program product including a non-transitory computer readable storage medium having computer program code encoded thereon comprising:

computer program code for ingesting, by a transcoding farm, a plurality of media files from intermediate storage, wherein the transcoding farm includes a virtual data center having elastic resources;

computer program code for transcoding, by the transcoding farm, the plurality of media files in parallel to a plurality of output formats in an elastic storage infrastructure; and

computer program code for packaging, by the transcoding farm, the plurality of transcoded media files for distribution via a content delivery network;

wherein ingesting the plurality of media files from the intermediate storage comprises receiving a plurality of transcoding processing jobs and managing the plurality of transcoding jobs utilizing a first job queue for pending transcoding jobs and at least a second job queue for working transcoding jobs;

wherein transcoding the plurality of media files in parallel to the plurality of output formats in the elastic storage infrastructure comprises:

selecting a given one of the transcoding jobs in the first job queue;

assigning the given transcoding job to a given set of resources providing a given virtual transcoder instance in the elastic storage infrastructure;

moving the given transcoding job from the first job queue to the second job queue;

utilizing the given virtual transcoder instance to transcode one or more of the plurality of media files in the given transcoding job;

receiving a notification from the given virtual transcoder instance that the given transcoding job is completed;

removing the given transcoding job from the second queue; and

releasing the given set of resources providing the given virtual transcoder instance in the elastic storage infrastructure for use in dynamically instantiating one or more additional virtual transcoder instances for one or more other ones of the plurality of transcoding jobs in the first queue; and

wherein assigning the given transcoding job to the given set of resources providing the given virtual transcoder instance in the elastic storage infrastructure comprises:

identifying a set of performance requirements for the given transcoding job;

determining whether the elastic storage infrastructure has sufficient available resources to meet the set of performance requirements for the given transcoding job;

responsive to determining that the elastic storage infrastructure has sufficient available resources to meet the set of performance requirements for the given transcoding job, dynamically instantiating the given virtual transcoder instance utilizing a subset of the available resources in the elastic storage infrastructure; and

responsive to determining that the elastic storage infrastructure does not have sufficient available resources to meet the set of performance requirements for the given transcoding job, provisioning additional resources in the elastic storage infrastructure and dynamically instantiating the given virtual transcoder instance utilizing the additional resources provisioned in the elastic storage infrastructure.

Assignments (6)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 5, 2019
From: MISTRY, NALINKUMAR N.; HUO, JIALE
To: EMC CORPORATION
Reel/Frame 048800/0267 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 5, 2019
From: WAHLSTROM, MATS N.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 048800/0470 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 5, 2019
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 048808/0205 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
Cited By (1)
US 12,348,810