Wowza Community

How to do adaptive bit rate live streaming with multiple SMIL files on edge servers

Hi there,

I want to usee Wowza origin-edge architecture to do adaptive bit rate live streaming. Currently I have one origin server, on which a Wowza transcoder is generating three streams with different bit rates.

As far as I know, in the Wowza origin-edge architecture, we can introduce primary and second origin URLS for failover. And the origin URLs can be easily added on Wowza Engine manager webpage. It looks like this

Primary Origin URL

wowz://origin_server_ip:1935/applicationname

Secondary Origin URL

wowz://redundant_origin_server_ip:1935/applicationname

I tried creating a second SMIL file containing streams from a redundant origin server and adding this second SMIL file to the origin URL. It doesn’t work. My goal is that: when the origin server dies, the edge server can automatically switch to another SMIL file.

Could anyone teach me how to introduce the second origin server into this architecture?

Thanks! :slight_smile:

Yorick

Yorick, you will need to follow this guide:

How to create and play SMIL files with streams created by Wowza Transcoder

NGRP do not get forwarded to the edge. The idea is that with this tool you can create a SMIL from using the medialist tool on the origin and create a file that you host in the content folder on the edge.

Regards,

Salvadore

Hi,

If you’re using a .stream file to get the streams from the origin to the edge server it does not use the Primary or Secondary Origin URL.

The stream will be published on the edge as it’s own stream and the edge application should be “live” which means it will packetize the stream itself as the origin would do.

To achieve adaptive bitrate (ABR) streaming with these streams from the Transcoder (on the origin) you will only reference the streams using a .smil file on the edge server.

As the streams now being published on the edge will be called, for example, livestream_source.stream, livestream_360p.stream and livestream_160p.stream, the .smil file will need to use these stream names.

In this scenario you’re re-streaming a live source similar to how re-streaming from an IP camera works, the only difference being the multiple streams created will be keyframe aligned so they can be used for ABR streaming.

Each edge server will need to have the same .stream files (livestream_source.stream, livestream_360p.stream and livestream_160p.stream) and .smil file in it’s content directory.

Regards,

Jason

Hi,

Using the live stream repeater Origin/Edge setup the edge will use the Primary Origin URL and if it doesn’t receive a response, it will switch to the Secondary Origin URL. This does not mean that the clients connected at that time will automatically receive the new stream, they will have to connect to the edge server again as the stream will have stopped when the Primary Origin stopped responding in this scenario which will cause the client to disconnect.

Regards,

Jason

Hi Salvadore,

I read that article and created a SMIL file on the origin server. But what do you mean by saying “and create a file that you host in the content folder on the edge.”?

Thanks!

Yorick

Hi Jason,

Thank you for your reply. But I want to use multiple origin servers and once an origin server dies, all the edge server “automatically” switch to the next origin server. I guess I can create multiple .smil files on the edge servers, each .smil file containing key frame aligned streams from an origin server. But when the currently working origin server falls down, I have to tell our clients to manually enter another URL and refresh their browsers
Thanks,

Yorick

In this case, it means origin server do packetize the stream, and edge server also do packetize the stream?
Then is there any other way which 1) only origin server do packetize and edge servers uses packetized result for ABR, or 2) origin server doesn’t packetize and edge servers do packetize?

Regards

Hi,
If the application is “Live” and you have any of the HTTP based playback client types enabled, when publishing a stream to this application, the streams will be packetized for those playback client types.

An origin/edge workflow using .stream files on the edges to pull the source(s) from the origin will use two “Live” applications but if you’re not wanting any playback clients on the origin, disable these playback options.

An origin/edge workflow using a “Live” application as the origin and a Live-Edge application as the edge means that the packetization is done on the origin (for the playback clients that are enabled) and the edge will ingest and use the already packetized streams created by the origin and repeat them for playback clients connecting to that edge.

Please find more information about live repeater origin/edge workflows in the following article.
https://www.wowza.com/docs/how-to-configure-a-live-stream-repeater

Regards,
Jason

HI, thanks for your response.
I know that an origin/edge workflow using a “Live” application as the origin and a Live-Edge application as the edge means that the packetization is done on the origin (for the playback clients that are enabled) and the edge will ingest and use the already packetized streams created by the origin.
Currently I already set live repeater origin/edge workflow.
Now I am going to enable ABR, for using this, need to set smile files in origin and edge both. ( NGRP do not get forwarded to the edge, so need to use smile files)
In this case (An origin/edge workflow + using ABR), origin and edge both do packetize the stream or only origin packetizes and edge just ingests already packetized streams by the origin?
Which is right? I want to get rid of both side packetizing for using ABR.

Regards.

A .smil file will only reference the streams for the player so it can see and switch between them as needed. Creating a .smil file will not adjust the application configuration on the edge to start packetizing the streams. It will work the same way a single bitrate stream does, the origin will packetize and the edge will repeat.

Regards,
Jason