Deliver a redundant HLS stream with Wowza Streaming Cloud

Adding redundancy into your Wowza Streaming Cloud™ production workflow can help prevent playback disruptions. On the ingest side, you can Build a redundant workflow with an Akamai stream source. On the playback side, you can configure redundancy for Wowza Streaming Cloud live streams and transcoders that use Wowza CDN - HLS stream targets. In this article, learn about redundant streams and how to configure them for a live stream in Wowza Streaming Cloud.

About redundant streams


Understanding redundant HLS streams involves three interrelated concepts: media segments (also called chunks), chunklists, and playlists. A chunk is segment of the stream that's somewhere between 2 and 10 seconds long. A playlist is a manifest (index) file, encoded in UTF-8 with the extension .m3u8, that includes the URLs to the chunks, complete with their bitrates and sequence numbers. A playlist comprises multiple chunklists, which are subsets of URLs in the playlist.

Redundant HLS streams in Wowza Streaming Cloud have duplicated media segments (chunks) and therefore duplicated chunklists within their master playlist. For transcoded (ABR) streams, each bitrate rendition in the playlist has a duplicate, backup chunklist. For passthrough streams, which only have one bitrate rendition, the playlist also has a second, redundant copy of the chunklist. During playback, if a primary stream chunklist of a certain bitrate rendition fails, the player can switch to a backup stream chunklist of the same bitrate rendition.

In Wowza Streaming Cloud, redundant streams are only available for Wowza CDN – HLS stream targets. You can create those automatically as part of the live stream workflow or create them manually as part of the advanced transcoder workflow.

Redundant streams require a player that can switch between primary chunklists and backup chunklists. Wowza Player, which is an option in the Wowza Streaming Cloud live stream workflow, supports redundant streams. To learn more about the redundancy functionality in Wowza Player, see Configure a redundant stream. To use third-party players, refer to their documentation to see if they support redundant streams, playlists, or chunklists.

Note: Enabling redundant streams in Wowza Streaming Cloud increases playback reliability but doubles egress data usage and associated charges.

Enable playback redundancy for a live stream


To configure a live stream with redundant chunklists, you'll need to:

  • Add a live stream with Wowza Player selected for playback. The Original HTML5 player setting does not work with redundant streams.
  • Enable the Redundant chunklists property for the associated stream target.

When you create a live stream with Wowza Player selected and the Redundant chunklists stream target property enabled, your viewers can watch a stream with redundant playback in one of these ways:

  • Using a Wowza Streaming Cloud hosted page generated by the live stream.
  • Using a self-hosted webpage that includes the player embed code generated by the live stream.
  • Using a self-hosted webpage including an embed code for a customized player from Wowza Player. This setup uses the Apple HLS playback URL generated by the live stream.

Add a live stream

  1. In Wowza Streaming Cloud, click the Live Streams menu and then click Add Live Stream.

  1. On the Live Stream Setup page, give the stream a name, specify a broadcast location, and then click Next.
  2. On the Video Source and Transcoder Settings page, provide information about the source encoder or camera that you're using and how it will connect to Wowza Streaming Cloud. Then, click Next.
  3. On the Playback Settings page, select Wowza Player and other player settings. Then click Next.
  4. Complete the steps to create the live stream: Specify hosted-page settings, review your choices, and then click Finish.

Enable the Redundant chunklists stream target property

  1. Click Advanced on the menu bar, and then click Stream Targets.
  2. Click the stream target with the name of your live stream.
  3. Click the Properties tab, and then click Edit.
  4. Select Redundant chunklists and select True. Then click Save.
  5. If you have started the live stream at any point before updating the Redundant chunklists property associated with its stream target, you must reset the live stream for the property to take effect. This step isn’t necessary if you haven’t started the live stream at all.
    To reset the live stream, go to the live stream details page, start the live stream, and then click Reset Live Stream.

Verify redundancy for your live stream


To test whether the live stream is producing a redundant stream for playback, you can use cURL to request information about the Apple HLS playback URL while the live stream is running.

  1. Set up a source encoder or camera and connect it to Wowza Streaming Cloud using the source connection information for your live stream. See Prepare and Connect Video Sources for information.
  2. Start your live stream.
    1. Select the stream on the Live Streams page.
    2. Click Start Live Stream at the top of the live stream detail page.
  3. Start your video source.
  4. In the live stream detail page, select the Apple HLS playback URL and copy it to your clipboard.

  1. Use a curl command in your Terminal window or Command Prompt to request information about the contents of the playback URL.
    1. (Windows) Ensure you have cURL downloaded. In the Command Prompt, enter this command:
      curl [your_Apple_HLS_URL_value]
    2. (macOS) In a Terminal window, enter this command:
      curl [your_Apple_HLS_URL_value]
    Note the duplicated chunklists for each bitrate rendition in the playlist.

    A transcoded (ABR) stream response will look something like this:
     
    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-STREAM-INF:BANDWIDTH=2689440,CODECS="avc1.100.31,mp4a.40.2",RESOLUTION=1120x700
    ../../687317/6059a27e_1_2728/chunklist.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=2689440,CODECS="avc1.100.31,mp4a.40.2",RESOLUTION=1120x700
    ../../687317-b/6059a27e_1_2728/chunklist.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=1808481,CODECS="avc1.77.40,mp4a.40.2",RESOLUTION=768x480
    ../../687317/6059a27e_1_1728/chunklist.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=1808481,CODECS="avc1.77.40,mp4a.40.2",RESOLUTION=768x480
    ../../687317-b/6059a27e_1_1728/chunklist.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=1225508,CODECS="avc1.77.32,mp4a.40.2",RESOLUTION=576x360
    ../../687317/6059a27e_1_1152/chunklist.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=1225508,CODECS="avc1.77.32,mp4a.40.2",RESOLUTION=576x360
    ../../687317-b/6059a27e_1_1152/chunklist.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=712202,CODECS="avc1.66.30,mp4a.40.2",RESOLUTION=460x288
    ../../687317/6059a27e_1_640/chunklist.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=712202,CODECS="avc1.66.30,mp4a.40.2",RESOLUTION=460x288
    ../../687317-b/6059a27e_1_640/chunklist.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=560232,CODECS="avc1.66.30,mp4a.40.2",RESOLUTION=288x180
    ../../687317/6059a27e_1_448/chunklist.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=560232,CODECS="avc1.66.30,mp4a.40.2",RESOLUTION=288x180
    ../../687317-b/6059a27e_1_448/chunklist.m3u8
    A passthrough stream response will look something like this:
     
    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-STREAM-INF:BANDWIDTH=2759469,CODECS="avc1.100.31,mp4a.40.2",RESOLUTION=1120x700
    ../../727828/97c78872_1_2728/chunklist.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=2759469,CODECS="avc1.100.31,mp4a.40.2",RESOLUTION=1120x700
    ../../727828-b/97c78872_1_2728/chunklist.m3u8
  2. Click Stop Live Stream at the top of the live stream detail page to end your test stream, and then stop the video source.

More resources