March 26, 2014

Adaptive bitrate HLS from MPEG-TS live stream

Nimble Streamer is making a significant step towards advanced HLS coverage. In addition to recently introduced UDP MPEG-TS to HLS transmuxing, today we release adaptive bitrate HTTP Live Streaming generated from UDP MPEG-TS live stream.

Update: New article about MPEG-TS transmuxing to HLS, RTMP etc is available. Also, read general Nimble Streamer MPEG2TS feature set page.

If you have a source of MPEG-TS stream transmitted via UDP and you want to generate fixed bitrate or adaptive bitrate HLS stream, your general use case would be as follows.

Pre-requisites: install Nimble Streamer and set up your UDP source to stream to Nimble Streamer server.

  1. Using WMSPanel, define which interface (IP and port) will be listening for incoming streams via UDP. Those streams will be used as a source for generating outgoing streams.
  2. Define what outgoing streams will be generated from previously defined incoming streams. They can be used as fixed bitrate streams for your viewers and re-used as a source for ABR set up.
  3. If you'd like to create ABR streams, define adaptive streams using the variety of previously defined outgoing streams.

Nimble Streamer is getting the incoming stream and converting the UDP MPEG-TS stream into HLS chunks. These chunks are being sent to the player right after the request comes in. MPEG-TS source may disconnect and connect again, but the stream will resume producing chunks from the moment of incoming stream resume.

So you may provide origin streams via HLS protocol, both with fixed bitrate and with adaptive bitrate. This diagram visualizes the described workflow. The same workflow applies to transmuxing MPEG2TS over HTTP to HLS.

Here's the step-by-step instruction for fixed bitrate and adaptive bitrate set up.

1. Set up incoming streams

Select Nimble Streamer / Live streams set up menu.

You will see servers list to select the one which you'd like to have as a live origin server.

Selecting the server to start the set up.
Clicking on server name you will go to designated server streaming details. Each page has a dynamic image of your set up process - you may see where you are at and what are next steps.

Incoming UDP streams list.
In the incoming streams page you'll see a list of streams, each having IP and port, with a number of programs in it.
The green color of each line means that the stream is active. Yellow means it's not online at the moment.

To set up incoming stream click on Add UDP stream. You will see a dialog asking for an IP and a port. Nimble Streamer will be listening to the specified port at the specified IP address and make actions according to further settings.

Specifying IP and port for incoming UDP streams.

2. Set up outgoing streams

Now when the incoming stream is defined, you can create outgoing stream for your viewers.

Click on the main diagram at "Outgoing stream" blocks or click Outgoing link in top right corner of the page.

Outgoing streams list.
You see a list of created existing streams. Each has stream name, video/audio streams details and other options. To add new stream for viewer, click on "Add outgoing stream". You'll see the following dialog.

Defining new outgoing stream.
Here you need to specify:

  • Application name and stream name. They will be used in result URL of the stream for accessing via players.
  • Video source and video stream. This is where the video will be taken from for further mix. The source is the incoming stream defined in step 1. The stream can be selected from the drop down list based on the source information. If no information has been received yet, you may select "First video stream" to get whatever is transmitted. If the source has just one stream, it will be picked up by default with no special setup.
  • Audio source and audio stream works the same way as "Video source".
  • Bandwidth, resolution and codec are the custom fields which will be included into HLS playlist information. E.g. Bandwidth may be "65000", "1280000", "2560000" etc. Resolution might be "640x360", "416x234" etc. The Codec filed may have specific codec settings like "mp4a.40.5", see this RFC for other examples.

As you see you may mix video stream with audio stream from different programs into single media stream.

Having the outgoing stream defined, you can click on URL for Player link to get full address of the resulting stream which you can insert into your player or application.

Getting result URL for players and applications.

3. Set up adaptive bitrate streams

With the outgoing streams ready, you may go further and create HLS streams with adaptive bitrate support.
Click on ABR part of the diagram to see the list of multi bitrate streams.

Adaptive bitrate streams list.
Here you can see a list of ABR streams, each having the application and stream name for URL and a sub-list of outgoing streams which they are made of.

To create a new multi-bitrate adaptive stream you need to click on Add ABR stream. You'll see a dialog like this.

Create ABR HLS stream.
Here you need to specify

  • application and stream name for further usage,
  • outgoing streams which this multi-bitrate stream will contain.

With that having been set up, you may click on URL for Player.

Getting URL for adaptive bitrate stream.
This URL can be used for further playback.

The ABR HLS streams definition is similar to producing ABR HLS from RTMP. Same easy to use interface and robust Nimble Streamer behavior.


The 3 mentioned steps allow processing any multicast or unicast UDP MPEG-TS stream into HLS adaptive bitrate stream. So your Nimble Steamer will be working as a streaming origin.

In addition to origin server set up you may also install more Nimble Streamers as HLS re-streaming edge servers to offload this Nimble origin and make your network more robust and scalable. You may also find useful features like hotlinking protection with domain lock and geo-location blocking.

Other HLS-related features to come soon, join our social networks for updates: Facebook, Twitter, Google+

Related documentation

Nimble HTTP StreamerTransmuxing published RTMP to ABR HLSPull RTMP to transmux into HLSTransmuxing MPEG2TS over HTTP to HLSMP4 transmuxing to HLS VOD streamingCreate ABR VOD HLS with SMILHLS re-streaming set upDispersa streams monitoringWMSPanel YouTube channelUsing Nimble in Rocksoft Cloud Media Solution

No comments:

Post a Comment

If you face any specific issue or want to ask some question to our team,

This will give much faster and precise response.
Thank you.

Note: Only a member of this blog may post a comment.