Live encoding - failover between main and backup ingest feed

When creating a live encoding with Bitmovin you have the option of configuring the encoding with both a main and a backup ingest feed available for RTMP and SRT (main and backup is not supported for ZIXI, however it should be possible to build resilience into the Zixi Broadcaster upstream of the Live Encoder).

This will have the effect that even if you experience a dropout on your main ingest feed (or backup ingest feed) the live stream will continue to play client side.

But how does it look with a real example? Please watch the following video where dropouts on both main and backup feeds are simulated.

Highlights from the video:

  • 00:02: Creating the live encoding with main and backup ingest
  • 01:30: Starting main and backup ingest feeds
  • 01:56: Main and backup ingest feeds running - waiting for live stream to play
  • 02:29: Live stream started and playing from main ingest feed
  • 03:25: Turning off main ingest feed - live stream will automatically failover to backup ingest feed
  • 03:45: Failover to backup ingest feed
  • 04:46: Turning back on main ingest feed (live stream continues from backup ingest feed)
  • 05:55: Turning off backup ingest feed - live stream will automatically failover to main ingest feed
  • 06:15: Failover to main ingest feed
  • 07:16: Turning of ingest and shutting down live encoding

FFMPEG command used to ingest RTMP:
ffmpeg -re -i "udp://233.0.14.137:1234?overrun_nonfatal=1&fifo_size=50000000" -vf drawtext="fontfile=monofonto.ttf: fontsize=96: box=1: boxcolor=black@0.75: boxborderw=5: fontcolor=white: x=(w-text_w)/2: y=((h-text_h)/2)+((h-text_h)/4): text='Primary - %{gmtime\:%H\\\\\:%M\\\\\:%S}'" -vcodec libx264 -preset ultrafast -b:v 8000k -acodec aac -f flv rtmp://ip-address/live/livestream

2 Likes

super cool @peder.borg. To confirm. You’re just using ffmpeg to simulate input from two different encoders correct? In the normal implementation we’d expect a customer to run 2x ingest streams and no-need for an FFMPEG layer.

@Adrian Fully correct. FFMPEG only simulates a live input stream to the Bitmovin Live Encoder. In a real-world scenario, you would typically have two encoders on-site/venue providing redundant ingest streaming to Bitmovin Live Encoder. This would secure failover, and make sure that your live stream continues playback for end-users.

1 Like