How to Inject/Insert SCTE-35 Markers Using StreamPublisher Module with SMIL File

Hello,

I am currently using the StreamPublisher module to schedule streaming in Wowza Streaming Engine. I send a SMIL file from my application using FTP to upload the SMIL file and use the “Reload Schedule” action to run the stream. I am integrating Server-Side Ad Insertion (SSAI) on HLS.

I am looking to inject/insert SCTE-35 markers into my stream while using the StreamPublisher module.

Questions:

  1. Where exactly do I need to add SCTE-35 markers? Should they be included in the SMIL file while sending the schedule, or is there another step where they need to be added?
  2. Are there any specific tags or attributes in the SMIL file format to include SCTE-35 metadata?
  3. Do I need to write a custom module to process SCTE-35 markers, or is there built-in support in Wowza for this use case?
  4. What are the best practices for handling SCTE-35 markers in a scheduled stream setup like this?

Any guidance, examples, or references to documentation would be greatly appreciated.

Thank you in advance for your help!

Reference:
Schedule streaming with a Wowza Streaming Engine Java module
…/com/docs/how-to-schedule-streaming-with-wowza-streaming-engine-streampublisher

1 Like

Hello again,

Note: I am not sure if this information is directly related to my workflow!

I have read more about the Wowza ModuleAdMarkers class and its role in preparing HLS streams for ad insertion based on SCTE-35 events in live MPEG-TS source streams. This involves adding custom headers such as EXT-X-CUE-IN , EXT-X-CUE-OUT-CONT , and EXT-X-CUE-OUT at the ad insertion markers.

The documentation mentions the following prerequisites:

  • All source streams must be MPEG-TS-based and contain SCTE-35 ad markers.

I am a bit confused about how the ModuleAdMarkers class works in conjunction with SCTE-35 ad markers. Specifically, I am trying to understand how to add these ad markers to my workflow. My setup involves sending a list of VOD files in the SMIL file, not MPEG-TS files. Then, Wowza handles the playlist in the SMIL file, and after calling the reloadSchedule action, Wowza runs the HLS stream.

Here are my additional questions:

  1. How exactly do I add/integrate SCTE-35 ad markers into my VOD-based workflow using SMIL files (StreamPublisher)?
  2. Can SCTE-35 markers be included in the SMIL file, or is there a different step where they need to be injected?
  3. If my source is not MPEG-TS, is there an alternative approach or additional steps required to ensure SCTE-35 markers are correctly processed by the ModuleAdMarkers class?

Reference:
Access MPEG-TS SCTE-35 Tags for HLS Streaming
…/com/docs/access-mpeg-ts-scte-35-tags-for-hls-streaming

Thank you for your assistance!

You are likely looking at a custom solution here.

SCTE-35 markers are stored in the SEI NAL Units of the video. There are APIs in WSE that would allow you to inject this data into the video as its processed by WSE.

I do not believe the StreamPub module supports this, but it could be enhanced to support it

Some of this depends upon the entire workflow-- how your players expect the HLS SSAI to be delivered and how it expects to find the SCTE-35 markers.

Scott Kellicker
Video Steaming Consultant
scott@blankcanvas.video

I did a very quick review of the article and code, and there seems to be two steps goin on here:

  1. RTPDePacketizerMPEGTSMonitorCUE is used to detect the SCTE-35 markers and inject onCue data events into the stream
  2. On the other side, ModuleAdMarker detects these onCue events and creates the HLS based on the onCue. This includes the proper HLS markers AND splitting the media segments at the proper cue points.

Smil files do not have a way to add markers, but you could certainly devise a way to insert SCTE-35 or onCue events with some custom code for whatever you are using to play the VODs as live