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

Install directory

By default, Wowza Streaming Engine installs to the following directories. Throughout documentation, [install-dir] is used as a placeholder to refer to these directories or, if you changed the default install location, to the directory where you installed Wowza Streaming Engine.

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:

Port Description and usage
TCP 1935 RTMP/RTMPE/RTMPT/RTSP-interleaved streaming and WOWZ™ streaming
TCP 8086-8088 Administration
UDP 6970-9999 RTP UDP streaming
TCP 80 HLS, MPEG-DASH, and RTMPT streaming
TCP 443 SSL/TLS streaming (RTMPS, HTTPS, and WebRTC)
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. Live and VOD are the two most common types of applications, but not the only options.

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.

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:

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

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 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 referred to as 'transmuxing,' and is supported on Windows and Linux 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 from Properties tabs 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.

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

Managing custom properties in Wowza Streaming Engine Manager

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

Managing custom 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 container element's container, and then add a new definition. The XML looks like this:

For more information about adding and managing custom properties, see Add a custom property.

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 (.flv)
  • MP3 (.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:

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