Trial Wowza Streaming Engine using a Docker Compose deployment

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:

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.

  1. 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
  1. 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.

  1. 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.
  2. 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 DEBUGINFOWARN, and ERROR. We recommend using the INFO value.
  1. 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.
  2. 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.

  1. 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.
  2. Update the LOG_LEVEL environment variable to control log verbosity. Possible values are DEBUGINFOWARN, 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.
  3. 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.

  1. Go to the directory containing your finalized docker-compose.yaml file.
  2. Run docker compose up to pull the Wowza Streaming Engine images and start each respective container with the configurations you specified.
  3. 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.
  1. Add your username and password.
  2. Click the Sign in button to log in to the Wowza Streaming Engine Manager dashboard.
  3. 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.

  1. Go to this page to start and publish your WebRTC stream.
  2. When prompted by the browser, allow the use of your web camera and your microphone.
  3. All settings should be prepopulated, and you don't have to modify them.
  4. Make note of the Application Name which is live.
  5. Confirm your input camera and microphone settings.
  6. Click to Publish your live stream.
  7. 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.
  8. 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.

  1. Download and install FFmpeg on your computer.
  2. 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
  1. 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.
  2. 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.

  1. Download and install OBS on your computer.
  2. Open OBS and the main workspace.
  3. Using the Sources dock, add a Media Source to display your video. Set properties for your video source and click OK.
  4. In the Controls dock, click Settings.
  5. Click Stream in the Settings menu.
  6. Update the following settings:
  • Service: Custom...
  • Server: rtmp://wse-trial.wowza.com/live
  • Stream Key: myStream

  1. Check and modify any GeneralAudio, and Video settings.
  2. Click OK to save your OBS settings.
  3. To connect your stream to Wowza Streaming Engine, click Start Streaming in the OBS workspace.
  4. 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.
  5. 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.

More resources