US2021021877A1PendingUtilityA1

Server independent cloud video playout system

Assignee: M/S AMAGI MEDIA LABS PVT LTDPriority: Feb 7, 2018Filed: Mar 22, 2020Published: Jan 21, 2021
Est. expiryFeb 7, 2038(~11.5 yrs left)· nominal 20-yr term from priority
H04N 21/26258H04N 21/2401H04N 21/236H04N 21/254H04N 21/2625H04N 21/222H04N 21/23406H04N 21/274H04N 21/238
46
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

For broadcast-grade service level guarantees for linear video Playout, it is important for Playout systems and the associated server hardware to be extremely reliable. To accomplish this both the Playout software and server hardware are tightly integrated in on-premise implementations. Playout systems on the cloud allow for leveraging cloud servers dynamically for miming Playout systems. The present invention proposes a system and method redundant, cost-effective for time-advanced, server-independent cloud Playout, which is useful in a variety of scenarios including but not limited to accomplishing seamless redundancy, optimizing operating costs by choosing different service provider/regions/servers. This is achieved by pre-playing the channel ahead of schedule, and then passing it to the output through an intelligent delay buffer. By switching Playout across multiple servers by instantiating new Playout software on another cloud server without impacting the linear output feed streamed out of the delay buffer we accomplish a server independent Playout system.

Claims

exact text as granted — not AI-modified
1 . A redundant, cost-effective system for time-advanced, server-independent cloud Playout having (a) a Playout sub-system (PLYM)  201 , (b) a Cloud Store  204  accessible over a network interface, (c) a Delay Buffer Manager (DBM) module  202 , and (d) a Playout Orchestration Manager (PORCH)  203  module wherein:
 a. The Playout sub-system (PLYM)  201  having an Automation module, a Playout, which assembles and blends one or more assets specified in a playlist including but not limited to digital audio, video, graphics, subtitle and triggers, which is then sent to an encoder, the PLYM being executed on one or more servers based on the controls fed from an Automation module, reads assets that need to be assembled which are typically in a Cloud Store  204 , plays out the content by blending audio, video and graphics, and outputs an encoded stream using an encoder module to a target destination; 
 b. The Cloud Store  204  is accessible independent of the status of the servers on which PLYM is executed; 
 c. The DBM  202  is an intelligent delay buffer management module that takes streams from multiple instances of PLYMs and other Playout sources, delays the streams by storing them for a defined period of time, and then the sends out a timed single output stream by picking data from the different buffers thereby maintaining continuity of the output stream; 
 d. The Playout Orchestration Manager (PORCH)  203  module controls the PLYM  201  and DBM  202 , guaranteeing Playout output to be time-exact as specified in the playlist by instructing the PLYM  201  to Playout ahead of schedule (time-advanced); 
 e. The encoded output stream of the PLYM  201  is stored in the DBM, which stores it for exact duration of the time-advancement done in PLYM, after which it is instructed by PORCH  203  to output the stream after a pre-determined delay; and 
 f. The PLYM  201 , DBM  202  and PORCH  203  are implemented as Containers, which helps in executing in different servers by binding them to a server instance dynamically. 
 
     
     
         2 . A system of  claim 1  wherein the PORCH  301  and PLYM  302  sub-system communicate such that:
 a. To initiate the start of Playout, the PORCH  301  sends an instruction PORCH-PLYM-Playout  303  with the following key parameters:
 i. A playlist start offset, which specifies the point in the playlist where the PLYM is expected to Playout from, to enable scenarios when one PLYM is replaced with another, such that the second instance can be instructed to start Playout exactly at the location where the first instance of PLYM is stopped; 
 ii. A Playout rate that specifies the rate at which the Playout is to be accomplished; 
 iii. An encoder clock value, which is the value of the encoder clock for the first encoded video that is sent out of the PLYM, which is used to enable continuity of streams across multiple PLYM instances wherein scenarios when one PLYM instance is replaced with another PLYM instance, are handled by making the encoder continues the clock exactly from where the first instance of PLYM had stopped; 
 iv. A start video frame type, assigned to the first video frame to be encoded out of the Playout to enable continuity of streams across the multiple PLYM instances; and 
 v. A DBM output buffer handle, which is a destination buffer onto which the Playout is expected to provide the output; 
 
 b. Upon receiving these parameters, the PLYM assembles audio, video, graphics, subtitles and trigger data according to a playlist defined timeline, and then encodes the data and places them in the DBM output buffer handle provided; and 
 c. Upon completion of every video frame worth of encoding and buffering, the PLYM sends a status to the PORCH in the form of PLYM-PORCH-Playout-Logs  303 , which has exact details of all input parameters for the currently completed video frame. 
 
     
     
         3 . A system of  claim 1  where the Delay Buffer Manager DBM is comprised of (a) one or more delay buffers  402 - 406 , (b) a Timed data buffer selector  407 , (c) a clock for the Timed data buffer selector  408 , and (d) a Multiplexer and output streamer module  410  wherein:
 a. The delay buffers are filled with encoded video streams from one or more PLYM instances ( 403 ,  405 ) wherein the PORCH  409  instructs at least one PLYM instance to Playout ahead of a duration of time-advancement time_ 1   412 , which is more than the need to switch between PLYMs while maintaining the output stream in a time-continuous fashion; 
 b. The Timed data buffer selector  407  chooses the delay buffer from which encoded data is to be accessed for output, and is triggered to action by the PORCH by giving it the time of day from when it should start the output streaming, provided as a start instruction with a duration of time-advancement time_ 1   412 , which is the time of the Playout in accordance with a playlist; 
 c. On receiving this instruction  412 , the Timed data buffer selector  407  starts its own clock  408 , which acts as a reference timer for the Multiplexer and output streamer module  410 ; 
 d. Based on output stream periodicity needs as dictated by the clock  408 , the Timed data buffer selector  407 , finds the highest sequence numbered delay buffer with the needed timed data, wherein a higher number indicates a greater priority such that the PORCH implements a selection policy for the right PLYM output by providing the selected PLYM output to be sent to the highest sequence numbered delay buffer; and 
 e. This data is then transferred to the Multiplexer and output streamer module  410 , which then sends out the output stream. 
 
     
     
         4 . A system of  claim 3  wherein Timed data buffer selector  407  receives a ‘Start output streaming @time 1 ’ message  501  such that:
 a. When day clock is time 1  the Timed data buffer selector  407  starts the timer  502  and then starts an iterator for each of the video frame rate period  503 ; 
 b. For each frame rate period T(i), the Timed data buffer selector starts  504  another iterator to go over all delay buffers, by going from the largest to the smallest delay buffer count; and 
 c. If the timed data is found on the jth delay buffer then that is selected and passed onto Multiplexer and output streamer module  506 , else the Timed data buffer selector iterates through to a lower sequence numbered delay buffer  507 . 
 
     
     
         5 . A system of  claim 1  wherein Playout redundancy is achieved by:
 a. The PORCH monitoring one or more logs coming out of a primary PLYM_Instance_ 1 , executing (the delay buffer) at a ‘normal rate’ to check for failures; 
 b. The PORCH instantiating a second PLYM_Instance_ 2   605  when it detects a failure in primary Playout, PLYM_Instance_ 1   602 , PLYM_Instance_ 2  executing the delay buffer at a ‘fast rate’ with input parameters for Playout that match the continuity of the final output stream wherein PLYM_Instance_ 2 's output is sent to delay buffer_ 2  of the DBM  603 ; 
 c. Since PLYM_Instance_ 2  is executing at a ‘fast rate’, the delay buffer_ 2  fills with data starting from the point at which PLYM_Instance_ 1  crashed but at a much quicker rate than the ‘normal rate’ of PLYM_Instance_ 1  thereby ensuring that before DBM's Timed data buffer selector exhausts delay buffer_ 1 , PLYM_Instance_ 2  has started sending its output to delay buffer_ 2 , by time-compensating to achieve buffer depletion; 
 d. Once secondary Playout is initiated, based on the failure, the PORCH re-instantiates PLYM_Instance_ 1  in ‘normal mode’ either on a different server and or region or availability zone, with a future time determined playlist time offset and encoder clock value and video frame type; 
 e. Once the PLYM_instance_ 1  is up and running, and starting to feed the delay buffer_ 1 , the PORCH brings down the secondary Playout PLYM_Instance_ 2 ; and 
 f. The DBM's Timed data buffer selector exhausts the delay buffer_ 2 , by which time the PLYM_Instance_ 1  is back as the primary Playout and starts to send its output to delay buffer_ 1 . 
 
     
     
         6 . A system of  claim 5  wherein the PORCH ensures the delay buffer_ 1  and delay buffer_ 2  have the same timed data as part of the overlap sequence in bringing back the primary Playout. 
     
     
         7 . A system of  claim 1  wherein cost-optimization of Playout across its lifetime using the cost arbitrage available in renting cloud server time such that:
 a. The PORCH  801 , in addition to the Playout controls and other inputs, maintains information on the lowest bid price of available servers at every point in time  806 ; 
 b. When instantiating the first PLYM_Instance_ 1  as the primary Playout  802 , the PORCH  801  looks for the lowest-cost server and binds the PLYM_Instance_ 1  to that server; 
 c. The PORCH  801  then instructs Playout start to the PLYM_Instance_ 1  and sends time 1 , which is the wall clock time for Playout start as determined by playlist at which time DBM needs to start output stream  804 ; 
 d. The PORCH  801  continually looks for the lower server price from the bidding data to optimize costs such that if there is a bid server available that is lower priced than the current server executing Playout_Instance_ 1 , then PORCH activates a switch of servers to move the Playout to a lower priced server, and shuts down the higher priced one; and 
 e. The PORCH  801  accomplishes the switch by starting PLYM_Instance_ 2  in parallel  805  to PLYM_Instance_ 1 , and once PLYM_Instance_ 2  has started generating output onto the delay buffer_ 2 , then PLYM_Instance_ 1  is shutdown and PLYM_Instance_ 2  takes the place of PLYM_Instance_ 1 , with the associated output delay buffer to DBM moved to delay buffer_ 1 . 
 
     
     
         8 . A redundant, cost-effective method for time-advanced, server-independent cloud Playout comprising the steps of:
 a. A Playout sub-system (PLYM)  454 :
 i. Assembling and blending one or more assets  455  specified in a playlist including digital audio and video that is then sent to an encoder  456 , where the PLYM  452  has an automation module and the PLYM is executed on one or more servers based on the controls fed from the Automation module; 
 ii. Reading assets  454  that need to be assembled that are typically in a Cloud Store  453 ; and 
 iii. Playing out the content by blending audio, video and graphics, and outputs an encoded stream using an encoder module  457  to a target destination; 
   b. A Cloud Store  453  accessible over a network interface independent of the status of the servers on which the PLYM  452  is executed;   c. A DBM  458 , which is an intelligent delay buffer management module:
 i. Taking streams from multiple instances of PLYMs and other Playout sources  459 ; 
 ii. Delaying the streams  460  by storing them for a defined period of time  459   a ; and 
 iii. Sending out a timed single output stream  461  by picking data from different buffers thereby maintaining continuity of output stream; and 
   d. A Playout Orchestration Manager (PORCH)  462  module:
 i. Controlling the PLYM and DBM, guaranteeing Playout output to be time-exact as specified in the playlist by instructing the PLYM to Playout ahead of schedule (time-advanced); and 
 ii. Storing the encoded output stream of the PLYM in the DBM,  458  which stores it for the exact duration of the time-advancement done in the PLYM. 
   
     
     
         9 . A method of  claim 8  wherein the PORCH  462  and PLYM  452  sub-system communicate, further comprising the steps of:
 a. The PORCH  462  initiating the start of Playout by sending an instruction PORCH-PLYM-Playout  462   a  with the following key parameters:
 i. A playlist start offset, which specifies the point in the playlist where the PLYM is expected to Playout from, to enable scenarios when one PLYM is replaced with another, such that the second instance can be instructed to start Playout exactly at the location where the first instance of PLYM stopped; 
 ii. A Playout rate that specifies the rate at which the Playout is to be accomplished; 
 iii. An encoder clock value, which is the value of the encoder clock for the first encoded video that is sent out of the PLYM, which is used to enable continuity of streams across multiple PLYM instances wherein scenarios when one PLYM instance is replaced with another PLYM instance are handled by making the encoder continue the clock exactly from where the first instance of the PLYM had stopped; 
 iv. A start video frame type, assigned to the first video frame to be encoded out of the Playout to enable continuity of streams across multiple PLYM instances; and 
 v. A DBM output buffer handle, which is the destination buffer onto which the Playout is expected to provide the output; and 
 
 b. The PLYM:
 i. Assembling  455  audio, video, graphics, subtitles and trigger data according to a playlist defined timeline, upon receiving these parameters; 
 ii. Encoding  457  the data and placing them in the DBM output buffer handle provided; and 
 iii. Sending a status to the PORCH upon completion of every video frame worth of encoding and buffering, in the form of PLYM-PORCH-Playout-Logs  462   b , which has the exact details of all input parameters for the currently completed video frame. 
 
 
     
     
         10 . A method of  claim 8  wherein the Delay Buffer Manager (DBM) further comprises the steps of:
 a. Filling one or more delay buffers  402 - 406  with encoded video streams from one or more PLYM instances ( 403 ,  405 ) wherein the PORCH  409  instructs at least one PLYM instance to Playout ahead of a duration of time-advancement time 1   412 , which is more than the need to switch between PLYMs while maintaining the output stream in a time-continuous fashion; 
 b. The Timed data buffer selector  407 :
 i. Choosing the delay buffer from which the encoded data is to be accessed for output and the PORCH triggering this delay buffer to action by giving it the time of day from when it should start the output streaming, provided as a start instruction with the duration of time-advancement time 1   412 , which is the time of the Playout in accordance with a playlist; 
 ii. On receiving this instruction  412 , the Timed data buffer selector  407  starting its own clock  408 , which acts as the reference timer for the Multiplexer and output streamer module  410 ; and 
 iii. Based on the output stream periodicity needs as dictated by the clock  408 , the Timed data buffer selector  407 , finding the highest sequence numbered delay buffer with the needed timed data, wherein a higher number indicates a greater priority such that the PORCH implements a selection policy for the right PLYM output by providing the selected PLYM output to be sent to the highest sequence numbered delay buffer; and 
 
 c. Transferring this to the Multiplexer and output streamer module  410 , which then sends out output stream. 
 
     
     
         11 . A method of  claim 10  wherein the Timed data buffer selector  407  receives a ‘Start output streaming @time 1 ’ message  501  further comprising the steps of:
 a. Starting the timer  502  when day clock is time 1  and then starting an iterator for each of the video frame rate period  503 ; 
 b. Starting another iterator  504  for each frame rate period T(i) to go over all the delay buffers, by going from the largest to the smallest delay buffer count; and 
 c. Upon finding timed data in the jth delay buffer, selecting that and passing it onto Multiplexer and output streamer module  506 , else the Timed data buffer selector iterating through to a lower sequence numbered delay buffer  507 . 
 
     
     
         12 . A method of  claim 8  for Playout redundancy comprising the steps of:
 a. Instantiating PLYM_Instance_ 1  at a time earlier than time 1   701  which is the wall clock time at which Playout is to start as per playlist, with the start of playlist parameters mapping its output to delay buffer_ 1  of DBM  702 , which is the primary Playout for creating the linear feed; 
 b. Calculating a Time difference between time 1  and time of start PLYM_Instance_ 1  Playout so as to exceed the time taken for instantiating PLYM_Instance_ 2  and getting the output of that Playout to reach delay buffer_ 2 , thereby guaranteeing that during the time from start of a PLYM_Instance_ 1  crash to the time for output from PLYM_Instance_ 2  reaching delay buffer_ 2  DBM output stream is maintained without any disruptions; 
 c. Instructing the DBM to start streaming output at time 1   703  once the PLYM_Instance_ 1  is up, time 1  being the wall clock time specified in the playlist for start of Playout; 
 d. The PORCH continuously monitoring PLYM_Instance_ 1  to see that the Playout is happening as planned  704 ; 
 e. The PORCH identifying a failure of PLYM_Instance_ 1  and instantiating PLYM_Instance_ 2   705 , which is the secondary Playout instance at a ‘fast rate’ to compensate for the time of crash and for the time taken to bring up the secondary Playout; 
 f. Setting all input parameters to enable Playout to continue stream from the point of failure of PLYM_Instance_ 1 ; 
 g. The PORCH checking the reason for the failure of PLYM_Instance_ 1   706  once PLYM_Instance_ 2  is up and running; 
 h. Re-instantiating PLYM_Instance_ 1  is in a different environment, so as solve the cause of failure  707  wherein one or more input parameters to start Playout are at a future point in time, which exceeds total duration that has been spent in bringing up PLYM_Instance_ 2 , and now PLYM_Instance_ 1 ; 
 i. PLYM_Instance_ 1  on starting of Playout taking over as the primary Playout; 
 j. The PORCH checking if the PLYM_Instance_ 1  is stable  708  and if not, restarting the process of identifying an alternate reason for failure  707 . 
 k. The PORCH bringing down the secondary PLYM_Instance_ 2   709  once the PLYM_Instance_ 1  is stable and going back to monitoring PLYM_Instance_ 1  as the primary Playout option  704 ; and 
 l. Maintaining Playout output continuity even when the primary Playout instance had crashed and realizing the same on an on-demand basis without the need for a fully redundant Playout. 
 
     
     
         13 . A method of  claim 12  wherein the PORCH ensures delay buffer_ 1  and delay buffer_ 2  have the same timed data as part of the overlap sequence in bringing back the primary Playout. 
     
     
         14 . A method of  claim 8  for cost-optimization of Playout across its lifetime using the cost arbitrage available in renting cloud server time comprising the steps of:
 a. Checking a Bid server for availability of a lowest-priced server  902  at a time earlier than time 1   901  which is the wall clock time at which the Playout is to start as per playlist; 
 b. Instantiating PLYM_Instance_ 1  on the lowest priced server with the start of playlist parameters and its output mapped to delay buffer_ 1  of DBM  903  which is the primary Playout for creating the linear feed; 
 c. Calculating a time difference between time 1  and time of start PLYM_Instance_ 1  Playout so as to exceed the time taken for instantiating PLYM_Instance_ 2  and getting the output of that Playout to reach delay buffer_ 2  thereby guaranteeing that during the time of switch from PLYM_Instance_ 1  to the time for output from PLYM_Instance_ 2  reaching delay buffer_ 2  the DBM output stream is maintained without any disruptions; 
 d. Instructing the DBM to start streaming output at time 1   904  once the PLYM_Instance_ 1  is up, time 1  being the wall clock time specified in the playlist for start of Playout; 
 e. The PORCH periodically checking for the Bid server with the lowest price for the servers  905  by checking if the current played out server instance price is less than the new available lowest bid server price  906 :
 i. If so the PORCH continuing to monitor the Bid server for lowest price and comparing the same with the current played out instance price  907 , wherein if there is a server instance with a lower price, then instantiating PLYM_Instance_ 2  on the new Bid server  908  at a ‘normal rate’ and providing the inputs to start Playout at a future point in time wherein the specific time offset for playing out should exceed the maximum time taken for PLYM_Instance_ 2  to be instantiated, content assembled, encoded and received in delay buffer_ 2  of the DBM; 
 
 f. Bringing down PLYM_Instance_ 1  and renaming PLYM_Instance_ 2  to PLYM_Instance_ 1   909 , once PLYM_Instance_ 2  is active; 
 g. Changing the output of the renamed PLYM_Instance_ 1  to point to delay buffer_ 1  on DBM to effect switching the servers for Playout without interruption of the final output stream from DBM; and 
 h. The PORCH iterating looking for lower cost servers  910 .

Join the waitlist — get patent alerts

Track US2021021877A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.