A Gradle and Docker-based development environment for building and testing custom Java modules that extend Wowza Streaming Engine™.
The Wowza Streaming Engine Plugin Builder provides a modern, containerized development environment for building and testing custom Java modules that extend the functionality of the Wowza Streaming Engine™ media server software.
This project includes a streamlined Gradle-based build system and a Docker Compose setup that runs Wowza Streaming Engine in a local container. The approach allows developers to build, package, and deploy custom Wowza Streaming Engine extensions quickly and consistently across platforms.
- Gradle build system — Compile, package, and manage dependencies for your Wowza Streaming Engine Java modules with ease.
- Docker Compose deployment — Spin up a fully configured Wowza Streaming Engine container for local testing and iteration.
- Modular development — Extend Wowza Streaming Engine functionality using custom Java classes and interfaces.
- Cross-platform setup — Works seamlessly on Windows, Linux, and macOS.
An example module, MyFirstPlugin, is included in this repository for testing and demonstration purposes. The example plugin includes:
- Server Listener:
com.wowza.wms.plugin.myFirstPlugin.MyFirstServerListener— Starts automatically when the Wowza Streaming Engine server launches. - Application Module:
com.wowza.wms.plugin.myFirstPlugin.MyFirstModule— Initializes when an application starts and the first stream connects to it.
Both components simply log a startup message to the console:
**********************************************
* Welcome to my first Server Listener v1.0.0 *
**********************************************
********************************************************
* Welcome to my first Application Module Plugin v1.0.0 *
********************************************************
You can modify these sample modules by adding any custom logic inside the example methods we provide. For more, see our Custom Java module examples.
Before you begin, make sure you have:
- A Wowza Streaming Engine license key.
- Install and run Docker Desktop, which includes the Docker Engine and the Docker Compose plugin.
Clone the repository and change to that directory:
git clone git@github.com:WowzaMediaSystems/wse-plugin-builder.git
cd wse-plugin-builderUpdate the WSE_LICENSE_KEY variable in the docker-compose.yaml file with your Wowza Streaming Engine license key:
export WSE_LICENSE_KEY=[your-license-key]Make sure Docker Desktop and Docker Engine are running. Then, initialize the project and build the Docker container. Run the following from the root of your project:
./build_builder.shThis builds a new Docker image named wse-builder:local using the Dockerfile in this repository. The image provides a build environment for compiling custom Wowza Streaming Engine modules.
Next, compile the module so it can be used as a plugin with Wowza Streaming Engine. Run the following from the root of your project:
./build.sh ./code/wse-plugin-my-first-pluginThis process generates the following plugin .jar file, which can be deployed and run with Wowza Streaming Engine:
code/wse-plugin-my-first-plugin/build/libs/wse-plugin-my-first-plugin-1.0.0.jar
To test the newly created module, run the following from the root of your project:
docker compose upThis starts the Wowza Streaming Engine trial Docker image and maps the lib.addon directory to the newly created .jar file. With a successful setup, you can see the following in the combined Docker service logs in your terminal:
wse-1 | INFO server comment - Server.startShutdownHook: Start server shutdown hook
wse-1 | INFO server comment - **********************************************
wse-1 | INFO server comment - * Welcome to my first Server Listener v1.0.0 *
wse-1 | INFO server comment - **********************************************
wse-1 | INFO server comment - StatsManager:startManager() Enabled=true
wse-1 | INFO server comment - Wowza Streaming Engine is started!
To learn more about our Docker Compose workflows, see:
- Get Started With Wowza Streaming Engine
- Set up Wowza Streaming Engine using a Docker Compose deployment
Wowza Media Systems™ provides developers with a platform to create streaming applications and solutions. See Wowza Developer Tools to learn more about our APIs and SDK.
You can also view our official Developer API and SDK documentation and these resources:
- Wowza Streaming Engine server-side Java API reference
- Use Wowza Streaming Engine Java modules
- Use custom Java modules
- Module and plugin examples hosted on GitHub
- Custom Java module examples
- Use event listeners in Wowza Streaming Engine
- How to extend Wowza Streaming Engine using the Wowza IDE
For questions or comments, contact Wowza Media Systems, LLC.
This code is distributed under the Wowza Public License.