Wowza Community

CC Closed Captions ingest as VTT/SRT

Hi Everyone,
we use Wowza Engine to stream a live-stream. So far everything works nice. A third party software helps us generating closed captions (subtitles) live (speech to text). This tool by Video.Taxi works great and gives us very precise time based CC/subtitles. We tried to ingest the CC/subtitles to Wowza but found no way to re-use the timing information. Is there any functionality to reuse WebVTT, SRT or any other subtitle/CC format with timing information in Wowza streaming engine? We do not want to convert to plain text and loose any timing information.
Thanks for your feedback,

Hi @Michael_Westphal, how are these captions sent to you or your Wowza Server; over HTTP maybe? For a project, we created a module with a HTTP endpoint that accepts captions (which could be in any format) and injects them directly into the Live stream. Of course, you must know what type of timing is being used in the SRT or WebVTT that you receive from the 3rd party service; is this absolute time, or an offset? Because in your Wowza Server, the only times you have is (1) absolute time, like “now” or offset, the number of (m)seconds since the start of the stream. Unless you somehow inject your own timestamps into the incoming stream …

Dear Karel, thanks for the feedback. The captions could be sent in any way to Wowza. I guess we have tried the module you are mentioned, but it’s not accurate and is not using the timing information. We could deliver any timing information Wowza needs. Relative, absolute, offset … whatever. Is there any direct way (without pushing to a HTTP endpoint) to inject the data directly? The best with timing information: when to appear, how long to show.
Thanks a lot for your help,
best, Michael

Hi @Michael_Westphal. Unless you’re one of Raskenlund’s customers (and maybe you are), I doubt if you’ve tried “the module I mentioned” as it was developed exclusively for a limited group. I’m not sure if a HTTP connection per se is to blame for timing inaccuracy, if you send the CC with a timestamp to the stream, a custom module can inject the data at the given timestamp, but logically no data can be added retrospectively.

The question is how the remote side can deliver the data; like how is this data handed over to you by the 3rd party service? Because a custom module in Wowza can be developed to connect in pretty much any way you need, be it UDP, unix sockets, web sockets, etc.

Hi @Karel_Boek - thanks again for your detailed feedback. No, we are not Raskenlund’s customer - but on we developed a similar tool, a long time ago. It’s the right time to change and with your help I’m pretty sure, that we are able to solve the problem.
The 3rd party service that delivers cues/CCs can deliver in any way we need (developers are ready to give us any format/protocol we need). A nice way would be for sure a web socket for example. But a rocket solid, fast HTTP request API is ok to us. How can we go on to develop such a tool or can you give us access to the module?

If your intent is do develop your own module, then you can start by implementing a HTTP Provider, or open a (web)socket when starting the Server or the VHost. For injection of the data into the stream, use either stream.sendDirect or publisher.addDataData - the latter gives you more control over the timing. as you can provide the time code as the 2nd parameter.

If you’re interested in help from an expert then you can post your request in, where a selected group of skilled consultants can respond.

Dear Karen - again thanks a lot for your answer. Can you give us a contact or access to the tool Raskenlund uses to send cues/CC with timing information. We would like to use that too. Thanks a lot.

Hi Michaen,

Please contact


Thanks Karel for the Email!