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 has an Automation module configured as a Playout, which assembles and blends one or more assets specified in a playlist, which playlist is then sent to an encoder, the PLYM being executed on one or more servers based on instructions fed from the Automation module, wherein the Automation module is configured to read assets to be assembled as stored in a Cloud Store 204, and configured to play out the content by blending audio, video and graphics, and configured to output 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 the PLYM is executed;
- c. The DBM 202 is an intelligent delay buffer management module configured to take streams from multiple instances of PLYMs, and configured to delay the streams by storing them for a defined period of time, and then configured to send out a timed single output stream by picking data from the different buffers thereby maintaining continuity of the output stream, the DBM 202 comprising one or more delay buffers 402-406, a Timed data buffer selector 407, a clock for the Timed data buffer selector 408, and a Multiplexer and output streamer module 410;
- 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 202, which stores the encoded output stream for exact duration of the time-advancement done in the PLYM 201, after which the DMB 202 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, facilitating executing in different servers by binding them to a server instance dynamically;
- wherein:
- 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;
- 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 the PORCH 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;
- 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;
- 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
- This data is then transferred to the Multiplexer and output streamer module 410, which then sends out the output stream.