This article describes how to run a trial version of the Wowza Streaming Engine™ media server software with a Docker Compose deployment and docker-compose.yaml file.
For a simple overview and demo, you can also see our Get Started with Wowza Streaming Engine trial page. If you prefer to manually install Wowza Streaming Engine, see Install and configure Wowza Streaming Engine.
About Docker Compose deployments
Using Docker Compose with a declarative YAML file to run Wowza Streaming Engine offers several benefits during the onboarding process:
- One-command deployment – Since the entire app stack is defined in a single YAML file, you can launch everything across different environments with a simple docker-compose up command. Preconfigured sample applications are included to get you streaming right away.
- Easier reproducibility – A declarative and reproducible approach simplifies the management of services, networks, volumes, and dependencies, making it easy to manage and customize environment settings and configurations.
- Persistent volumes and data – You can define named volumes to easily reuse or share them across containers or runs.
- Separation of services – With our YAML deployment solution, you can separate installations for Wowza Streaming Engine and Wowza Streaming Engine Manager services.
Note: The Docker Compose YAML approach has some advantages over the method used in the Set up Wowza Streaming Engine on the Docker container platform article. The latter also uses Docker but requires multiple installation steps. It also doesn't offer separate Wowza Streaming Engine and Wowza Streaming Engine Manager deployments.
Before you start
Before you start, review the Wowza Streaming Engine images for use with Docker containers in the following two repositories on Docker Hub:
- wowza/wowza-streaming-engine: Contains the core of the Wowza Streaming Engine media server software product upon which all other components are build. Consists of the software that ingests, processes, and delivers your live and on-demand streams. For more, see Understanding Wowza Streaming Engine.
- wowza/wowza-streaming-engine-manager: Contains the web-based user interface you can use to configure, manage, and monitor your Wowza Streaming Engine server. For more, see Find your way around Wowza Streaming Engine Manager.
Note: The latest software image is Wowza Streaming Engine 4.9.4. See the Wowza Streaming Engine 4.9.4 Release Notes.
For each repository, click the Tags tab to view a list of available versions of the Wowza Streaming Engine software.
1. Get a license for Wowza Streaming Engine
To set up a trial of Wowza Streaming Engine and leverage the Docker Compose deployment, you first need to get a license key for Wowza Streaming Engine. To do so, sign up for a free trial. Once you sign up, you'll receive an email with:
- Your trial license key for Wowza Streaming Engine.
- Information about the docker-compose.yaml file you can use to run the free trial.
- Additional links to resources and instructions.
Note: You can also use your paid license key for Wowza Streaming Engine with this workflow.
2. Install Docker
Next, install Docker on your server. We recommend installing Docker Desktop, which includes the Docker Engine and the Docker Compose plugin. After installing Docker, verify the installation is working as expected. Open a Terminal window and run:
docker version
If you're not familiar with Docker images and containers, we recommend completing Docker's Get started guide before continuing.
To make sure your environment can support the installation and transcoding requirements, check the Wowza Streaming Engine technical specifications.
3. Download the docker-compose.yaml file
Follow these steps once you've signed up for your free Wowza Streaming Engine trial, received your welcome email, and set up Docker Desktop on your server.
- Download the docker-compose.yaml file included with your email communication. You can also download the latest version of this file, which should look similar to this:
name: Wowza Streaming Engine Trial services: trial: hostname: wse.docker image: wowza/wowza-streaming-engine:latest-trial environment: - WSE_LICENSE_KEY=[your-trial-license-key] - ADMIN_USER=[your-admin-user] - ADMIN_PASSWORD=[your-admin-password] # Set list of IP addresses that are authorized to use the REST API - IPWHITELIST=* # Disable or enable the Wowza Streaming Engine Transcoder - TRANSCODER=disabled - LOG_LEVEL=INFO # Uncomment to persist configurations between starts of Wowza Streaming Engine # volumes: # - ./wse/application:/usr/local/WowzaStreamingEngine/application # - ./wse/conf:/usr/local/WowzaStreamingEngine/conf # - ./wse/content:/usr/local/WowzaStreamingEngine/content # - ./wse/transcoder:/usr/local/WowzaStreamingEngine/transcoder # Configure common Wowza Streaming Engine ports on the host machine ports: - 8087:8087 # REST API port - 80:80 # HLS, MPEG-DASH, and RTMPT streaming - 443:443 # SSL/TLS streaming (RTMPS, HTTPS, and WebRTC) - 1935:1935 # RTMP/RTMPE/RTMPT/RTSP-interleaved streaming and WOWZ streaming manager: hostname: wsem.docker image: wowza/wowza-streaming-engine-manager:latest environment: - LOG_LEVEL=WARN # Configure common Wowza Streaming Engine Manager ports on the host machine ports: - 8088:8080
- Save the docker-compose.yaml file to your computer.
4. Configure the docker-compose.yaml file
The docker-compose.yaml file defines two services. The first is for the backend Wowza Streaming Engine trial container, and the second is for the browser-based Wowza Streaming Engine Manager container.
Update the Wowza Streaming Engine container
Follow these instructions to update the docker-compose.yaml file and the trial services section.
- Update the image to include the version tag you intend to use. For example, to use the latest trial version of Wowza Streaming Engine, set the image to wowza/wowza-streaming-engine:latest-trial.
- Update the environment variables based on the following descriptions:
Environment variable | Description |
WSE_LICENSE_KEY | Required. Add the trial license key from the welcome email you received to activate the trial. |
ADMIN_USER | Optional. Create an admin user to log in and access your Wowza Streaming Engine instance. This user is added to the [install-dir]/conf/admin.password file. |
ADMIN_PASSWORD | Optional. Create an admin password to log in and access your Wowza Streaming Engine instance. This credential is added to the [install-dir]/conf/admin.password file. |
IPWHITELIST | Optional. Whitelist any IP addresses for other devices that are authorized to use the Wowza Streaming Engine REST API. This setting manages the <RestInterface>/<IPWhitelist> value in the Server.xml configuration file. For more, see the Wowza Streaming Engine Server.xml configuration reference. |
TRANSCODER | Optional and only available with the trial version of the image. Used to enable or disable the Wowza Streaming Engine Transcoder. Valid values are disabled for single bitrate streaming or enabled for adaptive bitrate (ABR) streaming. For better resource management, the default value is disabled. You can remove this line to preserve the last known state. |
LOG_LEVEL | Optional. Set to control log verbosity. Possible values are DEBUG, INFO, WARN, and ERROR. We recommend using the INFO value. |
- To persist configurations, applications, and content on your local disk and beyond the lifecycle of an individual container, uncomment any applicable volumes lines. The volume mount maps a local directory on your machine into a directory inside the container (host_path:container_path). This is useful if you want to retain changes or logs between container runs.
- Verify the correct Wowza Streaming Engine ports are configured on your host machine and that these ports aren't already in use. For port information, check the default port description and usage.
Update the Wowza Streaming Engine Manager container
Follow these instructions to update the docker-compose.yaml file and the manager services section.
- Update the image to include the version tag you intend to use. For example, to use the latest trial version for Wowza Streaming Engine Manager, set the image to wowza/wowza-streaming-engine-manager:latest.
- Update the LOG_LEVEL environment variable to control log verbosity. Possible values are DEBUG, INFO, WARN, and ERROR. We recommend using the WARN value here to limit logging from Wowza Streaming Manager. This setting also helps to highlight any Wowza Streaming Engine service messages and errors.
- Verify the correct Wowza Streaming Engine Manager ports are configured for your host machine and that these ports aren't already in use.
5. Start Wowza Streaming Engine
Before following the steps in this section, ensure Docker Engine is running. If Docker Desktop is already running, you should meet this requirement. These instructions assume you plan to work with Wowza Streaming Engine Manager.
- Go to the directory containing your finalized docker-compose.yaml file.
- Run docker compose up to pull the Wowza Streaming Engine images and start each respective container with the configurations you specified.
- Open a new browser tab and go to:
http://localhost:8088/login.htm?host=http://wse.docker:8087
Note: When you click the Server link, confirm the http://wse.docker:8087 URL displays.
- Add your username and password.
- Click the Sign in button to log in to the Wowza Streaming Engine Manager dashboard.
- Click the Applications tab to view the sample applications that are included with the trial image. For more, see Find your way around Wowza Streaming Engine Manager.
6. Publish a live stream
Continue with this section once your Wowza Streaming Engine instance is running. The Wowza Streaming Engine trial image is preconfigured with examples to help you get started streaming quickly. We will use four different methods to start a live stream and send it to your Wowza Streaming Engine server.
Adaptive bitrate streaming
If you plan on using adaptive bitrate streaming, you must enable the Wowza Streaming Engine Transcoder for each application. For more, see Set up and run Transcoder in Wowza Streaming Engine.
The preconfigured Docker images include a myStream transcoding template that's used to facilitate this workflow. You can find this template in Wowza Streaming Engine Manager when you go to your application. Click Transcoder in the contents panel. Go to the Setup tab and check the Transcoder Templates section.
Based on the myStream transcoding template, when you enable the Wowza Streaming Engine Transcoder, you'll see the following renditions created on the Incoming Streams page for your application.
Toggle between these four tabs to see the steps for each publication method.
WebRTC
Follow these steps to publish a low-latency WebRTC live stream to Wowza Streaming Engine using your computer's web camera. For more, see Set up WebRTC streaming with Wowza Streaming Engine.
- Go to this page to start and publish your WebRTC stream.
- When prompted by the browser, allow the use of your web camera and your microphone.
- All settings should be prepopulated, and you don't have to modify them.
- Make note of the Application Name which is live.
- Confirm your input camera and microphone settings.
- Click to Publish your live stream.
- In Wowza Streaming Engine Manager, go to Applications > live application > Incoming Streams page to see your stream as Active. If you enabled the Wowza Streaming Engine Transcoder, the ABR ladder is also visible here.
- Continue to the Test playback section.
Simulated
If you don't have an existing web camera, we've published a simulated live stream that plays indefinitely. This simulated live stream is based on the workflow described in the Publish a video file as a live stream with Wowza Streaming Engine article. No additional steps are needed to publish this stream.
You can confirm that the stream is published in Wowza Streaming Engine Manager. Go to Applications > simu-live application > Incoming Streams page to see your stream as Active. If you enabled the Wowza Streaming Engine Transcoder, the ABR ladder is also visible here.
Continue to the Test playback section.
FFmpeg
Follow these steps to publish a live stream to Wowza Streaming Engine using the FFmpeg project as your encoder. For more, see the FFmpeg documentation.
- Download and install FFmpeg on your computer.
- Open a Terminal window and run:
ffmpeg \ -stats \ -re \ -f lavfi -i testsrc=size=1280x720,format=yuv420p \ -f lavfi -i sine=f=220:b=4 \ -c:v libx264 \ -g 50 \ -c:a aac \ -f flv rtmp://wse-trial.wowza.com/live/myStream
- In Wowza Streaming Engine Manager, go to Applications > live application > Incoming Streams page to see your stream as Active. If you enabled the Wowza Streaming Engine Transcoder, the ABR ladder is also visible here.
- Continue to the Test playback section.
OBS
Follow these steps to publish a live stream to Wowza Streaming Engine using the open-source Open Broadcaster Software (OBS) as your encoder. For more, see the OBS documentation and this OBS quick start guide.
- Download and install OBS on your computer.
- Open OBS and the main workspace.
- Using the Sources dock, add a Media Source to display your video. Set properties for your video source and click OK.
- In the Controls dock, click Settings.
- Click Stream in the Settings menu.
- Update the following settings:
- Service: Custom...
- Server: rtmp://wse-trial.wowza.com/live
- Stream Key: myStream
- Check and modify any General, Audio, and Video settings.
- Click OK to save your OBS settings.
- To connect your stream to Wowza Streaming Engine, click Start Streaming in the OBS workspace.
- In Wowza Streaming Engine Manager, go to Applications > live application > Incoming Streams page to see your stream as Active. If you enabled the Wowza Streaming Engine Transocder, the ABR ladder is also visible here.
- Continue to the Test playback section.
7. Test playback
Continue with this section once you've published your live stream using one of the methods described in the previous section. Toggle between the following tabs to see how to test playback for each publication source.
WebRTC/FFmpeg/OBS
Use the links in the following table to test playback for live streams that were published with our WebRTC publish page, FFmpeg, or OBS. When testing playback for the WebRTC publish method, click Play on the WSE Trial Player page to view your video.
Note: WebRTC is designed for interactive, real-time audio and video, like Zoom, Google Meet, or live publishing to servers. WebRTC streams usually have to be transcoded or re-packaged into a format suitable for direct MPEG-DASH and HLS delivery. We recommend Wowza Streaming Entine Transcoder for this purpose.
Wowza Streaming Engine Transcoder disabled
Protocol | Publish method | Notes |
Play over WebRTC | WebRTC publish | |
FFmpeg/OBS publish | No audio support due to native Opus audio codec. | |
Play over HLS | WebRTC publish | No audio support due to native Opus audio codec. |
FFmpeg/OBS publish | ||
Play over MPEG-DASH | WebRTC publish | Protocol doesn't support direct playback over MPEG-DASH. |
FFmpeg/OBS publish |
Wowza Streaming Engine Transcoder enabled
Protocol | Publish method | Notes |
Play over WebRTC | WebRTC/FFmpeg/OBS | Protocol doesn't support adaptive bitrate streaming. |
Play over HLS | WebRTC/FFmpeg/OBS | |
Play over MPEG-DASH | WebRTC/FFmpeg/OBS |
Simulated
Use the following links to test playback for our simulated live stream, which is always up and running.
Transcoder state | Protocol | Notes |
Disabled | Play over WebRTC | No audio support due to native Opus audio codec. |
Play over HLS | ||
Play over MPEG-DASH | ||
Enabled | Play over WebRTC | Protocol doesn't support adaptive bitrate streaming. |
Play over HLS | ||
Play over MPEG-DASH |
8. Stop Wowza Streaming Engine
When you're finished using Wowza Streaming Engine, you can use Ctrl + C to stop all services defined in the docker-compose.yaml file. You can also just stop the containers without removing them with:
docker compose stop
And start later with:
docker compose start
To remove containers, default networks, and stop services:
docker compose down
For more details, see the Docker Compose documentation.
Troubleshooting
Playback issues using Safari
If you're using macOS and experiencing playback issues with Safari, you may need to turn off the Private Relay iCloud feature. For instructions, see Use iCloud Private Relay on Mac.
Docker Compose error messages about ports
If your docker compose up command fails with an error message about ports not being available, you may have other services running that are also using the ports defined in our docker-compose.yaml file.
Stop those services before running your Docker Compose command again. You can also change the ports in the docker-compose.yaml file, but you then have to modify ports for all playback URLs.