April 10, 2019

SCTE-35 markers forwarding and passthrough

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. SCTE-35 markers ads insertion will not work as well.

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.

Forwarding SCTE-35 markers via Nimble Streamer

Once you enable SCTE-35 processing, Nimble Streamer will start forwarding SCTE-35 markers from HLS and MPEG-TS input streams into output HLS and MPEG-TS streams. Whatever input marker types are used, Nimble will transform them into either of these markers for HLS or their analogs for MPEG-TS:


By default, the DATERANGE marker type is used. If you need to use any other one, use this Nimble parameter to change it:
hls_ad_marker_format = (cue|splicepoint|daterange)
where "cue" means Nimble will use CUE-OUT and CUE-IN markers, "splicepoint" will trigger the SPLICEPOINT-SCTE35 markers and "daterange" will produce DATERANGE markers. Read this page for more details of Nimble Streamer config.

If you need to use any other types of markers, let us know about it.

You may also enable automatic insertion of EXT-X-CUE-OUT-CONT tags after EXT-X-CUE-OUT by using this parameter:
hls_ad_splice_out_cont_marker_enabled = true

Passing SCTE-35 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 Streamer has wide support for ads insertion

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