Wowza Community

Custom Module to Process HTTP input Streams

Hi,

I need to write a custom Module which can grab a http Stream (for example m3u8) transcode it with xuggler to h264 and then restream it as usual with the settings of the application. How would you start doing that and what API classes should I use?

I already installed the IDE and checked out the starter tutorial.

Should I use Listeners or would I use the onStreamCreate function. How do I find out the streams of the application? And how do I get them back into Wowza after transcoding?

A few steps to get me started would be much appreciated :slight_smile:

Hi,

Just so that you’re aware, Wowza has it’s own Transcoder AddOn which can be used without the need to write any custom Modules.

Wowza can’t currently ingest streams via HTTP so you would not be able to receive the stream using Apple HLS (cupertino, m3u8).

Regards,

Jason

Hi,

Wowza can and does change the protocol of a source stream for playback with different streaming devices. Please see the Specifications page for details on what protocols we support.

The HTTP streams such as Apple HLS only support H.264 video codec so there would be no need to transcode the stream (unless you’re referring to transrating, which changes the bitrate but doesn’t require a change in codec).

As we support transcoding, transrating and transmuxing (the changing of protocol) I’m not sure how having this Module would benefit you. All streams in a single application must have a unique name so any transcoded renditions will not match the stream name the client originally connected to.

If you’re wanting to transcode or transrate a stream prior to reaching Wowza this is possible however you must ensure (if wanting to use adaptive bitrate (ABR) streaming) that the streams/renditions are keyframe aligned.

Regards,

Jason

Because you cannot ingest the streams via http I wanted to write a module that takes a http stream and ingests it into the wowza sever in a different protocol, using Xuggler as transcoder. I know about the transcoder but it is useless to me if it cannot convert protocols. One simple idea I had was telling the module to grab the http stream and then stream it to the wowza server via udp or rtmp. But if it is possible to ingest packets directly that would be awsome.

The Plan looks like this:

  • on setting up the aplication the user puts in the http Stream Url and the binded udp address (module settings maybe)

  • an adequate streamFile where the udp address is binded to the stream file gets created automatically with the wowza api (how to do that?)

  • when the first user wants to play the stream my module gets notified and turns on Xuggler (which transcodees the stream puts it into udp mpegts format and streams it to the stream file, this is my Modules part) with the souce(http url) as source and the udp address as target.

  • when no users are connected to the stream anymore my module gets notified and stops Xuggler (how to do that with th API?)

Thanks in advance