Building With Modules Part 2: How People Use ThemApril 26, 2017
This is Part 2 in a two-part series on extending Wowza Streaming Engine using custom server-side Java modules. To learn what modules are and how to build them, check out Part 1.
Whether you’re a first-time module builder or you’ve been at it for years, we’ve compiled some useful information on how others in the industry are doing it. First, we’ll share a few user stories that provide useful examples of module integration. Then, we’ll share a few popular Wowza modules to help you start building today.
User Stories: Module Integrations in Action
VideoSync: Syncing Polls and Slides With Video
VideoSync is a platform focused on building great user experiences (UXs) for organizations that stream webinars and live events. In order to improve viewing experiences, VideoSync built a custom Wowza Streaming Engine Java module to deliver time-aligned content (such as slides and polls) alongside live video streams. The module enables a player to read time stamps in the HLS stream, then display content alongside the corresponding video frames. This creates the same UX for all viewers, even though end-to-end latency varies among them.
Antti Kurkinen, a developer at Flik Media Group who helped build the VideoSync platform, used the “Player-Side Ad Insertion” module as a starting point—then made a few adjustments to allow HTTP requests to be sent straight from VideoSync to Wowza Streaming Engine.
“I think that one of the best things with Wowza is the possibility to customize it with modules, and that there is a big module collection ready to use and [many code examples] on GitHub.” —Antti Kurkinen, developer at Flik Media Group
Raskenlund AS: Live-Stream Captioning
Consultant Karel Boek has built hundreds of modules with Wowza Streaming Engine over the years. His company, Raskenlund AS, recently worked with a large live-streaming provider that specializes in live captioning. The company had transcribers around the world receiving its live video feed. The transcribers would type the captions in real time, then send the submitted text back to Wowza Streaming Engine, which would inject the text into the stream. To synchronize the live stream and closed captions, Boek added a variable delay to the feed, and viewers would then see the delayed stream with subtitles.
“Wowza Streaming Engine is much like a guitar. When your local scout group gathers around the campfire, one guitar is all you need. But any self-respecting rock band has multiple guitars—each of them plugged [into a] proper sound system, and some of them modified. … That’s why the REST API and Java API are not only useful, but in many cases, [are] essential to achieve the potential of a business case.” —Karel Boek, consultant at Raskenlund AS
10 Popular Modules
Below is a list of modules that are popular among Wowza customers. Check them out to see how our modules can optimize your streaming workflow.
|Module Name||Use Case|
|StreamPublisher||You can use this module when streaming one or multiple files. It enables you to create a psuedo live-streaming experience for VOD content. Use cases range from TV-like experiences to controlled UGC outlets.|
|LoopUntilLive||This module allows you to create a continous live-stream connection, even when you have an unstable connection from your encoder. Rather than having all players disconnect if the live feed from the encoder goes down, the players will see an alternative video stream that is being filled server-side. This stream could be an alternative content piece, or a notificaton message to viewers.|
|ModuleEncryptionHandler-CupertinoStreaming||This module lets you use the internal method of AES-128 encryption to secure a live or VOD stream to send to Apple iOS devices.|
|OnConnectAuthenticate2||If you’re publishing streams to Wowza Streaming Engine using your own Flash app, this module is here to help. It utilizes file-based authentication with RTMP clients, using credentials passed as parameters in the NetConnection.connect method.|
|S3Upload||Using this module, you can record content locally on the machine you’re using to run Wowza Streaming Engine, then upload it to an S3 bucket. The module uses Amazon Web Services (AWS) SDK for Java to upload the recorded files automatically.|
|ModuleStreamControl||This module controls Stream class streams and playlists. It can be used to dynamically create, set up and start new live Stream class streams from static and live sources, and to add sources to existing Stream class streams. It uses a custom Flash client as a user interface for the module.|
|AVMix||This module lets you substitute or add audio tracks to video streams. You can use it to add a music overlay to an IP camera feed, or to substitute an existing audio track on a stream with an alternative track (for example, an alternative-language audio track).|
|LiveStreamRecordAutoRecord||Using this module, you can set specific streams to be recorded automatically. It allows you to specify the naming convention, as well as have the recordings split at a specific duration.|
|ModuleCreateSnapshot||Capture a frame from a specific video using this module. This is a very useful module for creating metadata across your video—from thumbnail previews to image-processing analyses.|
Still need help? Join us on Slack to learn tips and tricks from other developers who are using and customizing modules with Wowza Streaming Engine.