Live streaming architecture on AWS

Hi, we are looking to replace our existing streaming system with Wowza Streaming Media servers and would love some help figuring out how to do it.

Requirements:

  • Dynamically created streams

  • HLS adaptive bit rate playlists

  • Scalable stream sources

  • Scalable stream targets

    The first problem that I am encountering is that in a configuration like this one:

    Stream Source (RTMP) --> Load balancer (least connections) --> Wowza_n (transcoders) --> Wowza Edge (CDN origin) --> CDN --> Player

    Wowza_n will transcode/transrate the stream and create the adaptive HLS index files, but it won’t push publish these to Wowza Edge to be made available to the CDN.

    I wrote a Module to push publish the streams (since we need to have the streams be created dynamically when a user connects) automatically to Wowza Edge, which works great for the streams themselves, but not for the HLS playlist information. My next step would be to try to write a Module for Wowza Edge to use IMediaListProvider.resolveMediaList() to reconstruct the playlist from the streams, but this seems overly complicated and could be problematic.

    So, taking a step back, the goal here is to be able to scale up to many live streams, transcoded, allowing for each stream to be dynamically created when the stream source first connects, and for the HLS output to be available to the CDN.

    I would welcome any suggestions on how to make this work, or how to change the architecture to achieve what we need. I know that Wowza_n servers could push publish HLS to Akamai, which could be an option if nothing else works, but we’d prefer to do that same thing (push publish HLS) to our own CDN.

    Thank you.

Why not extend the push publish module to copy the files to the CDN origin at the same time when push publishing?

Hello,

We recently changed the PushPublish API to allow pushing HLS to any HTTP endpoint that allows it.

See the example pushpublish hls here

Regards,

Andy_E