August 15, 2019

ABR in SLDP real-time streaming

Streaming media industry currently moves away from RTMP protocol to other real-time streaming technologies due to its future decline. The next generation of technologies tries not just to replace the protocol but also add new features like ABR or new codecs support.

Our team introduced SLDP - Softvelum Low Delay Protocol - as our vision of how real-time streaming should be implemented. Of course, we added capabilities that were missing in RTMP.


ABR capabilities


Adaptive bitrate (ABR) is one of the key features available as part of SLDP. It's supported on both sides of transmission:
  • Nimble Streamer server allows switching per player command among available bitrates which are set up as part of ABR stream
  • Larix Player provides controls for switching between bitrates if a stream has information about available sub-streams.
Switching of channels may be performed nearly instantly. A player sends command to a server to send media from another bitrate and once the data is received, it takes just a time equal to GOP duration to start displaying a new sub-stream.
Every sub-stream in ABR may have its own codec. With this feature you can combine high resolution sub-stream with H.265/HEVC and other sub-streams having H.264/AVC or use other codecs like VP8/VP9 or AV1.


SLDP and ABR setup


General process of SLDP playback setup in Nimble Streamer doesn't differ from RTMP playback setup. This article shows step-by-step procedure which is very simple with WMSPanel control panel web UI.

ABR setup in Nimble Streamer is described at this article and it's also straight-forward. It includes input streams processing and output setup. Notice the graceful adaptive bitrate stream approach used in Nimble.

If you don't have various renditions from and need to create them from your original stream, you may use our Live Transcoder, and try wildcard setup in particular to simplify this process. Also check this Transcoder video showing the setup process.

If you use Transcoder, you should also perform key frame alignment for all single-bitrate streams. Sometimes when you switch between different stream's renditions you can see a some short glitch. This happens because a player need a new GOP to start the playback. Different streams may have their key frames aligned differently, so each new GOP will start from different point. To avoid that, you need to perform key frame alignment. Use this article to set key frame alignment in your transcoding scenarios.


Larix Player usage


Having SLDP stream, you can now use our players to provide the playback to your users.

You may use 3 options:


All players are free of charge. They also have respective SDKs so you could customize them for your user experience.

SLDP HTML5 player setup also may optional parameters to tune the ABR playback.

If you'd like to set initial resolution which you want your uses to see by default when the player is loaded, use this setting:
initial_resolution = <width>x<height>
If you use key frame alignment as described above, you should use this parameter to obtain smooth rendition switching:
key_frame_alignment = true
You may also use latency_tolerance parameter to tune the streaming latency as described in this article.


That's it. With steps described above you will have full-featured SLDP ABR playback on any platform you need.

Please also take a look at the SLDP frequent questions to improve your SLDP usage. And read Reliable Low Latency Delivery with SRT+SLDP post in Haivision blog describing a combination of both protocols for building reliable delivery networks.

Also notice that HLS DVR streams can be added to SLDP HTML5 Player for rewinding low latency streams. Read this article for details.


Visit SLDP website and contact us in case of any questions regarding SLDP technology usage.

No comments:

Post a Comment

If you face any specific issue or want to ask some question to our team,
PLEASE USE OUR HELPDESK

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

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