April 10, 2019

SCTE-35 markers processing

Nimble Streamer covers wide variety of live streaming scenarios for numerous use cases. Some of them are related to advertising solutions which involve the usage of SCTE-35 markers that need to be delivered through Nimble Streamer without interruption and alternation.

Following the requests from our clients we added support for passing through the SCTE-35 markers from incoming MPEG-TS and HLS streams into output MPEG-TS and HLS delivery. So if your original stream has some markers in it, they will be passed through into the outgoing stream.

Enable SCTE-35 processing


To enable any processing of SCTE-35 markers on any Nimble Streamer instance, you need to add the following parameter into Nimble Streamer config file:
scte35_processing_enabled = true
You can read this page to find out how exactly you can make changes to Nimble Streamer config.

This will enable passing SCTE-35 though Nimble Streamer for MPEG-TS and HLS as well as for for Live Transcoder passthrough and for SCTE-35 markers ads insertion mentioned below.

If you don't add this parameter, none of those features will work. So please make sure you add that parameter and re-start Nimble Streamer.

SCTE-35 passing through Live Transcoder


If you need to pass SCTE-35 markers through Live Transcoder you can do it in two possible ways.

You may enable this feature server-wide for all streams being processed via Live Transcoder. Add the following parameter:
scte35_forwarding_enabled = true
Again, read this page to learn more about Nimble config.

You may also control SCTE-35 passthrough for any individual stream in Transcoder scenarios. Let's take a look at a simple scenario which allows keeping original stream as well as make lower resolutions.


Here you see /live/source stream being processed to get /live/output_480p output stream down-scaled to 480p (via Scale filter box) and keep the original rendition as /live/output_original stream.

There are 2 ways of passing the SCTE-35 - via video and via audio pipeline. We'll demonstrate both ways.

The /live/output_original stream has video being passed through - you can see long line with blue-to-orange gradient. This way, if you have full HD stream as input, you won't waste resources decoding and encoding the content to the same rendition. But the audio is split to decoder and encoder. Let's see their settings.


In the source stream decoder you see the enabled Forward SCTE-35 markers checkbox. It enables the transcoder to grab the markers for processing. In audio encoder setting, you click on Expert setup section to see the Forward SCTE-35 markers checkbox again. Check it to make the encoder take the markers which were previously grabbed into the pipeline by the decoder. After saving the transcoder scenario and re-starting the incoming stream, the output will have the SCTE-35 markers in the result stream.

The /live/output_480p stream has audio being passed through while video is transformed to lower rendition. So here we use video pipeline to pass SCTE-35 markers. It's set up the same way - both in decoder and encoder elements.


You need to check Forward SCTE-35 markers checkbox in video decoder and in video encoder settings under Expert setup section. As in case of audio, once you save the scenario and re-start input stream, the output will have the initial SCTE-35 markers.


Notice that scte35_forwarding_enabled=true parameter will override all individual streams' settings and all streams will have their SCTE-35 markers passed through.

Just a reminder: to make Transcoder passthrough work, you need to set scte35_processing_enabled=true for your server as described above.

Ads insertion with Nimble Advertizer


Nimble Advertizer server-side ads insertion framework has full support for ads insertion with SCTE-35 markers. Take a look at its tech spec and demo page. You may also injest SCTE-35 into your live streams for further passthrough, encoding and ads insertion.
Please read respective aforementioned articles and pages for more details.


If you find any issues with SCTE-35 processing, please file us a support ticket so we could help you.

Related documentation


Nimble Streamer live streaming scenarios, Nimble Advertizer, Live TranscoderNimble Streamer configuration reference