Author Archive

How to receive SAP packets and process them

How to receive SAP packets and process them:

We were asked to look at SAP (Session Announcement Protocol) and how we could make it work with Wowza Streaming Engine. It turns out it is a relatively simple protocol but there are few gotchas which did trip us up however we have come up with an application module that should meet most needs along […]

» continue reading

How to publish with WebRTC using H264

How to publish with WebRTC using H264:

This has been asked many times on how to get WebRTC to publish with H264 using the WebRTC publisher provided by Wowza. This code is extremely basic but by default publishes VP8. There are two ways to resolve this problem and we are going to choose one that requires no changes to the Wowza configuration/session […]

» continue reading

How To – Do Stream Motion Detection

How To – Do Stream Motion Detection:

We have been asked to look at several features relating to the transcoder, one being motion detection. We did a little digging and it appears Wowza Streaming Engine provides access to frames after they have been decoded. There are several posts such as Stack OverFlow and a somewhat more complete example Wowza Code Example This […]

» continue reading

How to set stream timecodes to absolute time

How to set stream timecodes to absolute time:

We were recently asked to look at how to provide absolute timecodes in a stream, regardless of if the encoder sent them or not. This can be done and is extremely simple to do. package guru.thewowza.example.absolute; import com.wowza.wms.application.*; import com.wowza.wms.amf.*; import com.wowza.wms.module.*; import com.wowza.wms.stream.*; public class Timecode extends ModuleBase { public void onAppStart(IApplicationInstance appInstance) { […]

» continue reading

Dynamically created SMIL for VOD and Live Streams

Dynamically created SMIL for VOD and Live Streams:

We recently published an article outlining how to get some meta data from VOD files for use with the AMLST extension and although reasonably useful we have recently been furnished with a significantly better approach and decided to build a full solution to share. When using adaptive bitrate streams , so multiple files or live […]

» continue reading

How to only allow known IP addresses to connect to your HTTP Origin server

How to only allow known IP addresses to connect to your HTTP Origin server:

To protect your Wowza Streaming Engine server from invalid IP addresses when in HTTP Origin mode we have come up with a simple HTTP validator. Although relative simple to implement not quite as obvious as you might think and uses a little trick into fooling Wowza Streaming Engine. In order to implement this we have […]

» continue reading

How To Get File Information – Codec/Bitrate

How To Get File Information – Codec/Bitrate:

We have been looking at how to do this for a while and finally came up with a reasonable method. This could be used in conjunction with the AMLST API and do note it does trigger some ‘cupertino’ messages although you may not be using cupertino to stream anything. private IMediaReaderCupertino mediaReader = null; private […]

» continue reading

How to get all network interfaces and addresses that are active

How to get all network interfaces and addresses that are active:

We were recently working on a small project and the need to get all network interfaces and addresses was required. Although this is not Wowza specific we thought it would be a useful bit of information to save other people time. try { Enumeration InterfaceNets = NetworkInterface.getNetworkInterfaces(); for (NetworkInterface netint : Collections.list(InterfaceNets)) { try { […]

» continue reading

How to create an IClient object

How to create an IClient object:

There are occasions where code within Wowza requires an IClient object, however you find that either there are no connections or none available within the class space you are working within. You can create an IClient object with the following code IClient thisClient = new Client(appInstance.getVHost(),Server.getInstance().getClientIdGenerator().getNextId()); This will then allow you to pass the created […]

» continue reading

How to control cropping dynamically with the Wowza transcoding API

How to control cropping dynamically with the Wowza transcoding API:

The Wowza transcoder does allow you to configure many stream items before encoding starts providing very granular control, dynamically. Outlined in this article is the use of the ILiveStreamTranscoderNotify and ILiveStreamTranscoderActionNotify interfaces. The application module adds a listener using addLiveStreamTranscoderListener to the application instance and from there adds an additional listener addActionListener. Each class is […]

» continue reading