How To Build Custom Modules in Wowza Streaming Engine
Wowza’s new Developer Deep Dive webinar series kicked off by focusing on a core strength of Wowza Streaming Engine: unparalleled extensibility. In this session, Mike Vitale, VP of Product and Strategy, and I demonstrated how developers can leverage custom modules to build sophisticated, tailor-made video workflows.
While Wowza Streaming Engine offers a robust set of features out of the box, the ability to write custom code gives organizations the flexibility to integrate unique business logic directly into the media server.
The Foundation of Flexibility: Extensive APIs and Docker
One of the most significant advantages for developers is the stability of Wowza’s APIs. Many custom modules, even those built years ago for version 4.0, still function reliably today because the underlying Java interfaces are consistent. This ensures that custom logic doesn’t break during routine engine upgrades.
To further streamline the developer experience, Wowza is increasingly leveraging Docker to simplify the build and deployment process. By using pre-configured containers and build scripts, developers can spin up a local instance of Wowza Streaming Engine and compile custom JAR files in seconds. This provides a ready-to-go environment for rapid prototyping, without risk to the broader system.
Enhancing Monetization with HLS Interstitials
One workflow we covered was adding HLS Interstitials for server-guided ad insertion. Unlike traditional client-side methods, this approach allows the server to instruct the player on exactly when and what to play through the HLS manifest.
By extending the HTTPProvider and MediaPacketizer classes, developers can:
- Inject Dynamic Content by using a REST API to trigger the insertion of ads, emergency alerts, or localized content into a live stream.
- Manipulate Manifests in Real-Time by adding EXT-X-DATERANGE tags to the manifest that define precise start dates and durations for interstitial assets.
- Control Playback Behavior by delivering transitions where the player automatically cuts to a 10-second ad and resumes the live broadcast exactly where it left off.
Interactive Experiences via ID3 Metadata Injection
Beyond advertising, we also explored how ID3 metadata can create synchronized, interactive viewer experiences. By injecting JSON payloads directly into the video stream, developers can trigger client-side events in perfect sync with the frames.
For E-commerce and Education, this could be used to trigger a browser to advance presentation slides or display “buy now” sidebars based on specific moments in the video. To synchronize data, pass complex objects, such as GUIDs, arrays, or integers, to a custom player. This updates the UI without needing a secondary data socket. Maintain full workflow control by managing these triggers through a custom REST API endpoint, built directly into the Wowza instance.
Leveraging the Community and Professional Services
The Wowza GitHub repository currently hosts over 50 public examples and plugins, including solutions for SCTE-35 sensing and an open-source integration with Whisper that provides free, high-accuracy speech-to-text captions.
Whether you are forking an existing repository to add new features, or building a proprietary module from scratch, a well-integrated system will meet your exact technical requirements. For organizations that require highly specialized workflows but lack in-house Java expertise, Wowza’s Professional Services team is available to design, build, and maintain these custom projects.
Ready to start building?
Watch the Developer Deep Dive Webinar VOD here. And visit our GitHub repository to download modules and start experimenting. We can’t wait to see what you build. Don’t hesitate to reach out if you have any questions.