Understanding Wowza Streaming Engine

Wowza Streaming Engine™ media server software is a robust, customizable, and highly extensible Java-based platform that powers live and on-demand single-bitrate and adaptive bitrate streaming to any device, anywhere. This article introduces the different aspects of Wowza Streaming Engine and how you can use each of them.

About Wowza Streaming Engine


Part of what makes Wowza Streaming Engine so powerful is the variety of ways you can use and extend the software to meet your needs. Ultimately, all settings and configurations for Wowza Streaming Engine are saved in .XML files within the Wowza Streaming Engine installation directory. You can edit the .XML files directly or, when possible, use Wowza Streaming Engine Manager. For more information, see About Wowza Streaming Engine XML configuration.

Throughout the Wowza Streaming Engine documentation, you'll see references to the following components.

  • Wowza Streaming Engine
    The core of the Wowza Streaming Engine media server software product upon which all other components are built. When we refer generically to 'Wowza Streaming Engine' we typically mean the software that ingests, processes, and delivers your live and on-demand streams.
     
  • Wowza Streaming Engine server 

    The physical appliance (server) running Wowza Streaming Engine software. Often this is one or more servers dedicated to processing and streaming media.
  • Wowza Streaming Engine Manager 

    A web-based user interface you can use to configure, manage, and monitor your Wowza Streaming Engine server.
  • Wowza Streaming Engine Java API

    Wowza Streaming Engine is built on Java and can be extended using a variety of programmatic methods via the Java API.
  • Wowza Streaming Engine REST API

    Wowza Streaming Engine includes a REST API that can be used to configure, manage, and monitor your Wowza Streaming Engine server.

Server settings in Wowza Streaming Engine


Default settings in Wowza Streaming Engine can be used for many streaming scenarios. Use the Server tab in Wowza Streaming Engine Manager or edit the [install-dir]/conf/Server.xml file directly to change settings, create and manage accounts for users and live media sources, and to access statistics.

For more information, see:

Ports

Wowza Streaming Engine uses the following default ports:

TCP 1935 RTMP/RTMPE/RTMPT/RTSP-interleaved streaming and WOWZ™ streaming
TCP 8086-8088 Administration
UDP 6970-9999 RTP UDP streaming
TCP 80 HDS, HLS, MPEG-DASH, Smooth Streaming, and RTMPT streaming
TCP 443  TLS/SSL streaming (RTMPS and HTTPS)
TCP 554  RTSP streaming

It's important that you configure your network and firewall to allow communication on these ports or configure alternative ports for these purposes. For more information about managing the ports used by Wowza Streaming Engine, see Streaming and administration ports for Wowza Streaming Engine.

Virtual Hosts

Commonly, Wowza Streaming Engine is used with a single virtal host (VHost). However, in some cases, such as multitenancy, it can serve multiple users from separate virtual hosting environments. Each VHost has its own set of configuration files, application folders, and log files. The Wowza Streaming Engine media server VHost.xml configuration file located at [install-dir]/conf/VHost.xml defines the settings used to configure a virtual host. For information, see Wowza Streaming Engine VHost.xml configuration reference.

Applications in Wowza Streaming Engine

Wowza Streaming Engine uses applications to deliver streaming content. An application is a set of settings for live or video-on-demand (VOD) streaming, defined in an Application.xml file. Two default applications are installed with Wowza Streaming Engine: live and vod. These are the two most common types of applications, but not the only options. You can either use the preinstalled default applications (live and vod) or create and configure new applications.

The easiest way to create new applications is to use the Add application page in Wowza Streaming Engine Manager. Doing so results in all of the necessary directories and files being created for you, which you can then configure and manage with Wowza Streaming Engine Manager or directly in a text editor. If you choose to create an application manually, it's important to follow the same directory and file structure that would be used if you were to create the application in Wowza Streaming Engine Manager. Using the preinstalled live application as an example, the application is named live, the application type (AppType) is Live, and its Application.xml file is located in your [install-dir]/conf/live directory. Continuing with the same example, the following directories and files are needed if you're manually creating an application:

  • [install-dir]/applications/live
  • [install-dir]/conf/live
  • [install-dir]/conf/live/Application.xml
  • [install-dir]/conf/live/PushPublishMap.txt (Required only if the Stream Targets feature is enabled for the application.)

Note: You can have more than one application of the same application type, but each application must have a unique name.

For more information, see:

Application instances

An application instance is an instantiation of an application and provides a namespace and context for streaming. An application instance is started dynamically; a single application can have multiple named application instances running simultaneously. If no name is specified for an application instance, the default name _definst_ is used. In many streaming scenarios, a single application instance is used per application and the name is never referenced and defaults to _definst_

Stream Types

In Wowza Streaming Engine, named stream types control different types of streaming (live, VOD, recording, origin/edge, etc.). These stream types are automatically set based on the selected application type and options enabled on the application Setup page if you create the application in Wowza Streaming Engine Manager. However, you can also use a text editor to change the StreamType property in the <Streams> container element in an Application.xml file. For more information, see example values for StreamType.

HTTP streamers and live stream packetizers

Wowza Streaming Engine can ingest and deliver streams over a variety of protocols including WebRTC, SRT, RTSP, HLS, and other HTTP-based protocols. When delivering streams to players that use HTTP-based streaming protocols, the incoming streams must be packaged (packetized). Wowza Streaming Engine uses HTTP streamers (playback types) and live stream packetizers to accomplish this. This repackaging of streams is often refered to as 'transmuxing,' and is supported on Windows, Linux, and macOS installations of Wowza Streaming Engine. For more information, see About HTTP streaming and packetization in Wowza Streaming Engine.

Properties and parameters in Wowza Streaming Engine


Wowza Streaming Engine is built upon an extensive collection of properties that make the software highly configurable and customizable. All of the properties map back to parameters in the Wowza Streaming Engine Java API. Some properties are pre-configured with default values to help you get started quickly and easily, but others must be manually added if you want to use them. 

A lot of properties can be managed in Wowza Streaming Engine Manager, especially the default properties, but some must be added and managed directly in the configuration XML files. Regardless of how they're added or modified, all Wowza Streaming Engine properties are ultimately stored in the configuration ([install-dir]/conf) XML files.

Managing properties in Wowza Streaming Engine Manager

Note: You must be an administrator with advanced permissions to access the Properties tab.

When adding custom (non-default) properties with Wowza Streaming Engine Manager, you must specify the following information:

  • Path - The specific container element where the new property should be added. For example, the path /Root/Application/LiveStreamPacketizer would signify that the property should be added to the <LiveStreamPacketizer> container element's <Properties> element within the Application.xml file. 
  • Name - The name of the property.
  • Type - The type of value supported by the property. This can be Booleaninteger, or string.
  • Value - The desired value to set for the property.

For more information about adding and managing properties in Wowza Streaming Engine Manager, see Configure properties.

Managing properties in XML

When adding custom (non-default) properties directly to the configuration XML files, you must provide the property's Name, Type, and Value, but you don't need to specify a path because you're adding the property directly to the appropriate location within the file. To use the same LiveStreamPacketizer example as above, you'd open the [install-dir]/conf/[application]/Application.xml file in a text editor, locate the <LiveStreamPacketizer> container element's <Properties> container, and then add a new <Property> definition. The XML looks like this:

<LiveStreamPacketizer>
    <Properties>
        <Property>
            <Name>...</Name>
            <Type>...</Type>
            <Value>...</Value>
        </Property>
    </Properties>
</LiveStreamPacketizer>

For more information about adding and managing properties, see About Wowza Streaming Engine XML configuration.

Wowza Streaming Engine Java API parameters

All properties in Wowza Streaming Engine map back to parameters defined in the Wowza Streaming Engine Java API. For more information, see Wowza Streaming Engine Java API.

For example, each live stream packetizer has a maximum chunk, segment, or fragment count setting. For HLS, this is called cupertinoMaxChunkCount. This is a pre-configured property, so it has a default value which you can modify in Wowza Streaming Engine Manager, by editing the Application.xml file, or by using the setMaxChunkDuration method in the LiveStreamPacketizerCupertino class of the Wowza Streaming Engine Java API.

Media types


Media types aren't defined in configuration files, but they are an important part of streaming because they help players understand how to play the content. Wowza Streaming Engine can read the following media or file types to play live streams and VOD content:

  • MP4 (QuickTime container - .mp4, .f4v, .mov, .m4v, .mp4a, .mp4v, .3gp, .3g2, etc.)
  • FLV (Flash Video - .flv)
  • MP3 content (.mp3)
  • SMIL (synchronized multimedia integration language - .smil)
  • AMLST (API-based MediaList)

Media types are specified by a prefix to the stream name and help players know how to play the stream. This is particularly useful for playing VOD content and playing groups of stream renditions together. For example, to play the MP4 file myStream.mov, you would use the mp4: prefix so that it would be mp4:myStream.mov. The following media type prefixes are supported:

  • mp4: 

    VOD streaming. This is used as the default if no prefix is specified.
  • flv: 

    VOD streaming. When the flv: prefix is specified for a live stream that is being recorded, an FLV container is used to store the recording.
  • mp3: 

    Live (audio) and VOD streaming.
  • id3: 

    Live and VOD streaming. MP3 file returning only ID3 tag information.
  • smil: 
    Adaptive bitrate streaming for live and VOD content. SMIL files provide a means to specify a group of live streams or VOD files for adaptive bitrate switching. For stream switching to occur correctly, key frames must be property aligned across all of the bitrate renditions. The smil: media type prefix is used to playback content that's specified in SMIL files. For more information, see Stream adaptive bitrate content with Wowza Streaming Engine.
  • ngrp: 

    Adaptive bitrate live streaming. The Transcoder feature in Wowza Streaming Engine uses a templating system to cluster streams into logical groups, called stream name groups, for live adaptive bitrate delivery. Stream name groups and SMIL files serve the same purpose, and either method can be used for adaptive playback of live streams. The ngrp: media type prefix indicates that the stream name group is being used to provide adaptive bitrate streaming.
  • amlst: 
    Adaptive bitrate streaming for live and VOD content. The Wowza Streaming Engine Java API can be used to intercept requests for adaptive bitrate streams and provide the stream grouping. Using the amlst: media type prefix indicates that a set of Java objects that describe the adaptive bitrate stream (the API-based MediaList) is being used to provide adaptive bitrate streaming. For more information, see Resolve SMIL file requests with the Wowza Streaming Engine Java API.

Streaming codecs, protocols, and playback


To enable live and on-demand streams to play on desktops, mobile devices, set-top boxes, and more, Wowza Streaming Engine supports a wide variety of codecs, streaming protocols, and formats. However, not all video and audio codecs are compatible with each other, and not all codecs are supported by all protocols and formats. See Understanding protocols and formats supported by Wowza Streaming Engine for more information.

By default, Wowza Streaming Engine is configured to enable delivery and playback of ingested streams over MPEG-DASH, HLS, RTMP, HDS, Smooth Streaming, and RTSP/RTP. Additionally, with the Transcoder feature in Wowza Streaming Engine you can transcode, and transrate you streams for delivery over different codec and protocol combinations. For more information, see About Wowza Streaming Engine Transcoder.

Playback URLs

Wowza Streaming Engine supports live and on-demand stream playback on many players. All streaming with Wowza Streaming Engine is based on URLs, which vary by protocol. For more information, see About playing Wowza Streaming Engine streams.