Wowza Community

ABR not working in Origin/Edge Setup (for Live Streaming)

I am trying out the “ABR” for “Live Streaming” via “Origin/Edge” Setup, in Wowza v4.2.

Actually everything is working, except the ABR Portion. Meaning, i managed to setup Origin/Edge Setup, do the Live Streaming, broadcast from WireCast and test it from the Edge Server (Test Player there). Everything is working as expected.

So here is what i got so far (working components):

  • Origin/Edge Setup (1x Origin, 1x Edge … so far)

  • Live Streaming (via WireCast)

  • Able to watch the Live Stream playback via Edge Server (Test Player)

But then when i try the ABR part, i keep seeing the blank page in the “Edge’s Test Player”.

I followed this ABR Guideline.

(But the problem is, the Article seems to be explaining about the (simple) Single Server only, NOT FOR ORIGIN/EDGE.)

So here are some questions.

  • Can i even use ABR in the Origin/Edge setup?​

  • Is there something to “do” (TURN ON?) in the “Origin” Server if we go ABR? (Or everything mentioned in the above Article should be done in Edge only?)

  • Is it because of WireCast?

    Please kindly help.

    Thank you so much with regards.

Hello there.

How are you creating the ABR renditions of the stream? Via the Wowza Transcoder? Or with Wirecast?

The renditions must be key-frame aligned for ABR to function. You can enable debugging for key-frame alignment:

How to debug encoder multi-bitrate keyframe alignment

Also, 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.

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

Regards,

Salvadore

Hi,

In addition to the articles mentioned by Salvadore, you might also want to look into the “How to lock multi-bitrate streams on live stream repeater edge” forum article.

Zoran

Hi,

On your Edge server, in the .stream files you are using the incorrect playback URL form the origin server.

For example, in the myStream_160p.stream file, you are using the following playback URL: rtmp://:1935/liveorigin/mp4:myStream_160p

This is not correct, because on your Origin server the published stream is called myStream_160p.stream and not myStream_160p

Having this in mind, the myStream_160p.stream file from your edge server, needs to contain the following playback URL: rtmp://:1935/liveorigin/mp4:myStream_160p.stream

The same is valid for all the other renditions you are using.

Zoran

The “renditions” are the different bit rate streams for example myStream_720p and myStream_360p. These renditions make up an ABR(Adaptive bit rate) set

These renditions have to be key-frame aligned. How are you creating these renditions? With the Wowza Transcoder, or through Wirecast?

The Wowza Transcoder guarantees key frame alignment and you can use the “ngrp”(Stream name group) feature for playing back the ABR stream. With other methods you will need to use a .smile file.

This guide shows how to set up the Wowza Transcoder for live streams (includes steps for ABR):

How to set up and run Wowza Transcoder for live streaming

If Using Wirecast and the renditions are key frame aligned you can follow this guide:

How to do adaptive bitrate streaming

The renditions must be key-frame aligned for ABR to function. You can enable debugging for key-frame alignment:

How to debug encoder multi-bitrate keyframe alignment

I suggest getting this to work without incorporating an origin-edge configuration first. Then build on top of the working setup.

I hope this helps,

Salvadore

I think you need to remove the .stream step from your work flow, and just add the raw Transcoded renditions to the .smil file. an example .smil would be:

<?xml version="1.0" encoding="UTF-8"?>
<smil title="SMIL file for live streaming">
	<body>
		<switch>
			<video height="240" src="myStream_200" systemLanguage="eng" width="424">
				<param name="videoBitrate" value="200000" valuetype="data"></param>
				<param name="audioBitrate" value="44100" valuetype="data"></param>
			</video>
			<video height="360" src="myStream_350" systemLanguage="eng" width="640">
				<param name="videoBitrate" value="350000" valuetype="data"></param>
				<param name="audioBitrate" value="44100" valuetype="data"></param>
			</video>
			<video height="720" src="myStream_700" systemLanguage="eng" width="1272">
				<param name="videoBitrate" value="700000" valuetype="data"></param>
				<param name="audioBitrate" value="44100" valuetype="data"></param>
			</video>
		</switch>
	</body>
</smil>

Again, get this working without including origin-edge first to make sure you have everything built right, then add origin-edge.

Regards,

Salvadore

Hi Guys, thanks all for the kind helps.

But the examples (or solutions) you shared seems to be not for Wowza v4? Because i use the Web Interface so i’m not sure (haven’t tried) whether this kinda editing from backend might “still work” in Wowza 4 or it will break.

Other than that, well @salvadore, i honestly do not know what is “ABR renditions”, because i just followed the Article (i mentioned in my question) and that’s one and only thing i did. They didn’t mention about that in the ABR article. So please, what is “ABR rendition” and how, please.

Hi @Zoran, thanks much, i’m trying with the article you shared. But again, yet, i’m not sure how to do that in Wowza v4 Web Panel.

Hi guys, i think i got something.

Now i know how to setup “Stream Files” (via Transcoder) in the Origin. And then create the matching “Stream Files” inside the Edge. Then these are related each other (Origin Stream Files => Edge Stream Files) and i can play the Stream Files from Edge Now.

Meaning that, from the Edge, when i (for example) play the “myStream_720p.stream” (in the “TEST PLAYER” by keying in the “myStream_720p.stream”), it plays the Live Video with 720p. Then again when i key in “myStream_360p.stream”, and press the Play button again, it plays in 360p. So that, i can manually connect to the different bit-rate streams now.

So next step, what should i do next please?

Because until now is playing the single files, selectively. Of course the goal is to have a player which contain all this ABR streams. So how do i relate ALL these “Stream Files” to the Single Player. Or, until now i don’t have an idea what is “SMIL Files” for.

Now is the time to talk about SMIL Files please? Then how do i RELATE these “Stream Files” with the “SMIL Files” ?

Urrrg… i’m really being confused. Please help :frowning:

Hi Salvadore,

Really thanks for your kind helps.

I actually not sure what are ‘renditions’ in Wowza (and where to set to). But i’m sure i used Wowza Transcoder.

But as i mentioned, i have reached to the state that i now have the “STREAM” files equally on both Origin and Edge server. So that allows me to play the desired Bit-rate from Edge’s Test Player, already, by manually keying in the desired Bit-rate STREAM name. For example:

On Edge (Test Player):

  • When i want to watch (160p), then i key in like: “myStream_160p.stream”. Then 160p is played.

  • When i want to watch (720p), then i key in like: “myStream_720p.stream”. Then 720p is played.

That means, i broadcast (via WireCast) ===> it reached to Origin Server ===> then it reached to Edge Server (And here, i can play the desired Bit-rate via Stream Files).

So now (as in layman term), how do i make my Player play all these different Bit-rate Streams altogether? So here comes the “SMIL” file’s role? (Cos i don’t know).

I mean what simply is the next step to do (click where, click what) like that? (Because i really appreciate your kind helps but it is far high for me to understand. I really prefer the direct what-to-do-next kinda steps) :smiley:

Thank you all :smiley:

Kind regards

Hi Guys,

Now I think i came to know how STREAM Files and SMIL Files are related. But by some reasons, i still can not play via the SMIL file. (See Status Error below)

I don’t know how to explain what i have, so i now DRAW A DIAGRAM so please kindly help to check what is wrong. (Especially the file “Namings”. I think the naming are important becos they are related to each other based on the names)

That ones inside are ALL I HAVE in my setup. Please help.

Thank you so much.

Kind regards!