IP Library Granted Patent US 11,405,661
Granted Patent B2
US 11,405,661 · App. 17/198,307 · Granted Aug 2, 2022

System and method for transcoding media stream

Inventors: Bradley Reitmeyer (Allen, TX); Paul Martel (Richardson, TX); Christopher Joel Ribble (Garland, TX)
Assignee: RESI MEDIA LLC
H04N21/2187H04L65/605H04N21/2365H04N21/2743H04N21/432H04N21/440218H04N21/63345H04N21/63775H04N21/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 11,405,661
App. No.
17/198,307
Granted
Aug 2, 2022
Kind
B2
Abstract

A system for transcoding a media stream includes at least one network interface; at least one memory; and at least one processor each coupled to one or more of the at least one network interface and one or more of the at least one memory. The at least one processor is configured to publish, via a messaging bus, a segment transcode request in a segment transcode request queue, retrieve the segment transcode request by a transcode worker thread, wherein the first transcode worker thread monitors the segment transcode request queue, transcode by a second transcode worker thread a segment referenced by the segment transcode request, determine by the manifest processor whether the second transcode worker thread has completed transcoding the segment and is still operating, and, if not, transcode the segment by a third transcode worker thread, and store the transcoded segment.

Claims (87)

1. A system for transcoding a media stream, comprising:

at least one network interface;

at least one memory; and

at least one processor each coupled to one or more of the at least one network interface and one or more of the at least one memory, the at least one processor configured to:

retrieve a segment transcode request from a segment transcode request queue by a first transcode worker thread of a plurality of transcode worker threads, wherein each one of the plurality of transcode worker threads is configured to monitor the segment transcode request queue or independently perform transcoding operations on segments;

transcode, by a second transcode worker thread of the plurality of transcode worker threads, a segment referenced by the segment transcode request; and

determine, by a manifest processor, whether the second transcode worker thread has completed transcoding the segment and is still operating, and, if not,

return the segment transcode request to the segment transcode request queue, and

transcode the segment by a third transcode worker thread of the plurality of transcode worker threads.

2. The system of claim 1 , wherein the at least one processor is further configured to:

initialize the manifest processor;

initialize the plurality of transcode worker threads;

publish, via a messaging bus, a transcode request in a transcode request queue, wherein the transcode request includes one or more transcode request parameters, wherein the messaging bus and the transcode request queue are provided by a messaging service, and wherein the messaging service provides communications distributed over the messaging bus across the system;

retrieve, by the manifest processor, the transcode request from the transcode request queue; and

publish, by the manifest processor via the messaging bus, the segment transcode request in the segment transcode request queue, wherein the segment transcode request queue is provided by the messaging service.

3. The system of claim 2 , wherein the at least one processor is further configured to:

retrieve a manifest referenced by the transcode request; and

parse the manifest, by the manifest processor, to locate the segment and include a location of the segment in the segment transcode request.

4. The system of claim 3 , wherein the at least one processor is further configured to:

publish, by the second or third transcode worker thread via the messaging bus, a segment transcode notification in a segment transcode notification queue, wherein the segment transcode notification indicates a successful transcode of the segment, and wherein the segment transcode notification queue is provided by the messaging service; and

merge the segment transcode notification with any other segment transcode notifications in the segment transcode notification queue.

5. The system of claim 4 , wherein the at least one processor is further configured to:

start a time interval;

retrieve, by the manifest processor, the segment transcode notification or a merged notification from the segment transcode notification queue, in response to an expiration of the time interval; and

create, by the manifest processor, a new manifest including information related to the transcoded segment and other segments referenced by the merged notification.

6. The system of claim 1 , wherein, when determining by the manifest processor whether the second transcode worker thread has completed transcoding the segment and is still operating, the at least one processor is further configured to:

place the segment transcode request in a transcode reattempt queue, wherein the transcode reattempt queue is a separate queue from the segment transcode request queue, wherein the transcode reattempt queue is provided by a messaging service, and wherein available transcode worker threads monitor the transcode reattempt queue in order to retrieve requests from the transcode reattempt queue and transcode segments referenced by segment transcode requests in the transcode reattempt queue.

7. The system of claim 1 , wherein the second transcode worker thread transcodes the segment referenced by the segment transcode request in accordance with one or more transcode request parameters, wherein the one or more transcode request parameters include at least one of:

a resolution parameter, wherein the resolution parameter indicates a resolution at which to transcode the segment;

a bitrate parameter, wherein the bitrate parameter indicates a bitrate to assign to the segment;

a cropping parameter, wherein the cropping parameter indicates that images in the segment are to be cropped;

a resizing parameter, wherein the resizing parameter indicates that a length of the segment is to be altered; or

a codec parameter, wherein the codec parameter indicates that the segment is to be transcoded to a different codec.

8. A method for transcoding a media stream, comprising:

retrieving a segment transcode request from a segment transcode request queue by a first transcode worker thread of a plurality of transcode worker threads, wherein each one of the plurality of transcode worker threads is configured to monitor the segment transcode request queue or independently perform transcoding operations on segments;

transcoding, by a second transcode worker thread of the plurality of transcode worker threads, a segment referenced by the segment transcode request; and

determining, by a manifest processor, whether the second transcode worker thread has completed transcoding the segment and is still operating, and, if not,

returning the segment transcode request to the segment transcode request queue, and

transcoding the segment by a third transcode worker thread of the plurality of transcode worker threads.

9. The method of claim 8 , further comprising:

initializing the manifest processor;

initializing the plurality of transcode worker threads;

publishing, via a messaging bus, a transcode request in a transcode request queue, wherein the transcode request includes one or more transcode request parameters, and wherein the messaging bus and the transcode request queue are provided by a messaging service, and wherein the messaging service provides communications distributed over the messaging bus;

retrieving, by the manifest processor, the transcode request from the transcode request queue; and

publishing, by the manifest processor via the messaging bus, the segment transcode request in the segment transcode request queue, wherein the segment transcode request queue is provided by the messaging service.

10. The method of claim 9 , further comprising:

retrieving a manifest referenced by the transcode request; and

parsing the manifest, by the manifest processor, to locate the segment and include a location of the segment in the segment transcode request.

11. The method of claim 10 , further comprising:

publishing, by the second or third transcode worker thread via the messaging bus, a segment transcode notification in a segment transcode notification queue, wherein the segment transcode notification indicates a successful transcode of the segment, and wherein the segment transcode notification queue is provided by the messaging service; and

merging the segment transcode notification with any other segment transcode notifications in the segment transcode notification queue.

12. The method of claim 11 , further comprising:

starting a time interval;

retrieving, by the manifest processor, the segment transcode notification or a merged notification from the segment transcode notification queue, in response to an expiration of the time interval; and

creating, by the manifest processor, a new manifest including information related to the transcoded segment and other segments referenced by the merged notification.

13. The method of claim 8 , further comprising:

when determining by the manifest processor whether the second transcode worker thread has completed transcoding the segment and is still operating, placing the segment transcode request in a transcode reattempt queue, wherein the transcode reattempt queue is a separate queue from the segment transcode request queue, wherein the transcode reattempt queue is provided by a messaging service, and wherein available transcode worker threads monitor the transcode reattempt queue in order to retrieve requests from the transcode reattempt queue and transcode segments referenced by segment transcode requests in the transcode reattempt queue.

14. The method of claim 8 , wherein transcoding, by the second transcode worker thread, the segment referenced by the segment transcode request includes transcoding the segment in accordance with one or more transcode request parameters, wherein the one or more transcode request parameters include at least one of:

a resolution parameter, wherein the resolution parameter indicates a resolution at which to transcode the segment;

a bitrate parameter, wherein the bitrate parameter indicates a bitrate to assign to the segment;

a cropping parameter, wherein the cropping parameter indicates that images in the segment are to be cropped;

a resizing parameter, wherein the resizing parameter indicates that a length of the segment is to be altered; or

a codec parameter, wherein the codec parameter indicates that the segment is to be transcoded to a different codec.

15. A non-transitory computer readable medium comprising instructions for operating a system including at least one network interface, at least one memory, and at least one processor, and the instructions, when executed by the at least one processor, cause the system to:

retrieve a segment transcode request from a segment transcode request queue by a first transcode worker thread of a plurality of transcode worker threads, wherein each one of the plurality of transcode worker threads is configured to monitor the segment transcode request queue or independently perform transcoding operations on segments;

transcode, by a second transcode worker thread of the plurality of transcode worker threads, a segment referenced by the segment transcode request; and

determine, by a manifest processor, whether the second transcode worker thread has completed transcoding the segment and is still operating, and, if not,

return, the segment transcode request to the segment transcode request queue, and

transcode the segment by a third transcode worker thread.

16. The non-transitory computer readable medium of claim 15 , further comprising instructions that, when executed by the at least one processor, cause the system to:

initialize the manifest processor;

initialize the plurality of transcode worker threads;

publish, via a messaging bus, a transcode request in a transcode request queue, wherein the transcode request includes one or more transcode request parameters, wherein the messaging bus and the transcode request queue are provided by a messaging service, and wherein the messaging service provides communications distributed over the messaging bus across the system;

retrieve, by the manifest processor, the transcode request from the transcode request queue; and

publish, by the manifest processor via the messaging bus, the segment transcode request in the segment transcode request queue, wherein the segment transcode request queue is provided by the messaging service.

17. The non-transitory computer readable medium of claim 16 , further comprising instructions that, when executed by the at least one processor, cause the system to:

retrieve a manifest referenced by the transcode request; and

parse the manifest, by the manifest processor, to locate the segment and include a location of the segment in the segment transcode request.

18. The non-transitory computer readable medium of claim 17 , further comprising instructions that, when executed by the at least one processor, cause the system to:

publish, by the second or third transcode worker thread via the messaging bus, a segment transcode notification in a segment transcode notification queue, wherein the segment transcode notification indicates a successful transcode of the segment, and wherein the segment transcode notification queue is provided by the messaging service; and

merge the segment transcode notification with any other segment transcode notifications in the segment transcode notification queue.

19. The non-transitory computer readable medium of claim 18 , further comprising instructions that, when executed by the at least one processor, cause the system to:

start a time interval;

retrieve, by the manifest processor, the segment transcode notification or a merged notification from the segment transcode notification queue, in response to an expiration of the time interval; and

create, by the manifest processor, a new manifest including information related to the transcoded segment and other segments referenced by the merged notification.

20. The non-transitory computer readable medium of claim 15 , further comprising instructions that, when executed by the at least one processor, cause the system to:

when determining by the manifest processor whether the second transcode worker thread has completed transcoding the segment and is still operating, place the segment transcode request in a transcode reattempt queue, wherein the transcode reattempt queue is a separate queue from the segment transcode request queue, wherein the transcode reattempt queue is provided by a messaging service, and wherein available transcode worker threads monitor the transcode reattempt queue in order to retrieve requests from the transcode reattempt queue and transcode segments referenced by segment transcode requests in the transcode reattempt queue.

Assignments (6)
TERMINATION AND RELEASE OF PATENT SECURITY INTERESTS RECORDED ON MAY 19, 2023, AT REEL/FRAME 063696/0709 Recorded Aug 20, 2024
From: CRESCENT AGENCY SERVICES LLC, AS ADMINISTRATIVE AGENT
To: PUSHPAY USA INC; RESI MEDIA LLC
Reel/Frame 068722/0660 →
PATENT SECURITY AGREEMENT Recorded Aug 20, 2024
From: PUSHPAY USA INC; RESI MEDIA LLC
To: JEFFERIES FINANCE LLC, AS ADMINISTRATIVE AGENT
Reel/Frame 068722/0758 →
SECURITY INTEREST Recorded May 19, 2023
From: PUSHPAY USA INC; RESI MEDIA LLC
To: CRESCENT AGENCY SERVICES LLC, AS ADMINISTRATIVE AGENT
Reel/Frame 063696/0709 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2021
From: REITMEYER, BRADLEY; MARTEL, PAUL; RIBBLE, CHRISTOPHER JOEL
To: LIVING AS ONE, LLC
Reel/Frame 055558/0038 →
CHANGE OF NAME Recorded Mar 11, 2021
From: LIVING AS ONE, LLC
To: ASYNCHRONOUS HOLDINGS, LLC
Reel/Frame 055558/0064 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2021
From: ASYNCHRONOUS HOLDINGS, LLC
To: RESI MEDIA LLC
Reel/Frame 055558/0070 →
Continuity (6)
Continuation 16710660 · Dec 11, 2019
Continuation 16017474 · Jun 25, 2018
Continuation In Part 15944312 · Apr 3, 2018
Continuation 15462816 · Mar 18, 2017
Continuation 15252368 · Aug 31, 2016
Related Publication 20210289234A1 · Sep 16, 2021
Cited By (2)
US 12,610,092 US 12,610,093