Looking for the full docs? Check out the complete [Wowza Streaming Engine documentation](https://www.wowza.com/docs/wowza-streaming-engine-product-articles). # About Wowza Streaming Engine Wowza Streaming Engine™ is robust, customizable, and highly extensible. Our Java-based platform powers single and adaptive bitrate streaming for live and on-demand videos on any device, anywhere. ## Introduction Wowza Streaming Engine (WSE) can be extended to meet a variety of needs. All configuration settings are stored in XML files within the installation directory. You can change these settings with [Wowza Streaming Engine Manager](https://www.wowza.com/docs/how-to-find-your-way-around-wowza-streaming-engine-manager) (WSE Manager) or [directly in the XML files](https://www.wowza.com/docs/about-wowza-streaming-engine-xml-and-json-configuration). Throughout this documentation, you'll see references to the following components. - **Wowza Streaming Engine (WSE)**: The core of the Wowza Streaming Engine media server software product upon which all other components are built. - **WSE server**: The physical server(s) running WSE, dedicated to processing and streaming media. - **[WSE Manager](https://www.wowza.com/docs/how-to-find-your-way-around-wowza-streaming-engine-manager)**: A web-based user interface used to configure, manage, and monitor your WSE server. - **[WSE Java API](https://www.wowza.com/docs/about-the-wowza-streaming-engine-java-api)**: Our Java API, used for extending WSE to suit your needs. - **[WSE API](https://www.wowza.com/docs/wowza-streaming-engine-rest-api)**: Our RESTful API, used to configure, manage, and monitor your WSE server. ### Install directory Throughout this documentation, `[install-dir]` is used as a placeholder for the WSE installation directory. The default directories are as follows: - **Windows**: - WSE 4.8.19 and later: `C:\Program Files\Wowza Media Systems\Wowza Streaming Engine [version]\` - WSE 4.8.18 and earlier: `C:\Program Files (x86)\Wowza Media Systems\Wowza Streaming Engine [version]` - **Linux**: `/usr/local/WowzaStreamingEngine-[version]/` ## Server settings The default [WSE server settings](https://www.wowza.com/docs/server-administration) are useful for many scenarios. To customize the settings, you can make changes in the **Server** tab of WSE Manager or edit the [`[install-dir]/conf/Server.xml`](https://www.wowza.com/docs/wowza-streaming-engine-serverxml-configuration-reference) file. ### Ports You must configure your network and firewall to allow communication on these ports or [configure alternative ports](https://www.wowza.com/docs/how-to-get-started-as-a-wowza-streaming-engine-manager-administrator#configure-streaming-ports). | Port | Description & usage | | --- | --- | | TCP 1935 | RTMP/RTMPE/RTMPT/RTSP-interleaved streaming and WOWZA™ 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 | ### Virtual hosts WSE is often used with a single virtual host (vhost). In some cases, such as multitenancy, it can serve multiple users from separate virtual hosts. Each vhost has its own application folders, log files, and [configuration files](https://www.wowza.com/docs/wowza-streaming-engine-vhostxml-configuration-reference) located in the `[install-dir]/conf/` directory. The `VHost.xml` file defines the vhost's configuration settings. ## Applications A WSE application is a group of streaming settings, defined in the `Application.xml` file. The two most common [types of applications](https://www.wowza.com/docs/how-to-find-your-way-around-wowza-streaming-engine-manager#application-types) are live and VOD. Multiple applications of the same type are allowed, but **each application must have a unique name**. The easiest way to create a new application is with [WSE Manager](https://www.wowza.com/docs/how-to-get-started-as-a-wowza-streaming-engine-manager-administrator#create-applications), which creates all the necessary [directories and files](https://www.wowza.com/docs/how-to-find-your-way-around-wowza-streaming-engine-manager#application-configuration) automatically. You can then configure and manage the application using WSE Manager or by editing the [`Application.xml`](https://www.wowza.com/docs/wowza-streaming-engine-applicationxml-configuration-reference) directly. ### Application instances Application instances provide a namespace and context for streaming. They are started dynamically. Multiple instances can run simultaneously within the same application. If a name is not specified for an application instance, the name `_definst_` will be used by default. Applications often use a single instance, in which case the instance name is never referenced. ### Stream types In WSE, named stream types control different streaming types (live, VOD, recording, origin/edge, etc.) If you create the application using WSE Manager, the stream type is selected on the **Setup** page. You can also change the [`StreamType`](https://www.wowza.com/docs/wowza-streaming-engine-applicationxml-configuration-reference#streamtype) property in the `` tag of the [`Application.xml`](https://www.wowza.com/docs/wowza-streaming-engine-applicationxml-configuration-reference) file. ## HTTP streamers and live stream packetizers WSE can ingest and deliver streams over WebRTC, SRT, RTSP, HLS, and other HTTP-based protocols. When delivering streams to HTTP-based streaming players, the incoming streams must be [packetized](https://www.wowza.com/docs/about-http-streaming-and-packetization-in-wowza-streaming-engine) using HTTP streamers and live stream packetizers. This process is called 'transmuxing' and is supported by all versions of WSE. ## Properties and parameters WSE is built on an extensive collection of properties that makes the software highly customizable. Each property maps to a parameter in the [WSE Java API](https://www.wowza.com/docs/wowza-streaming-engine-java-api) . All configuration values are stored in the XML files found in the (`[install-dir]/conf`) directory. Some properties are preconfigured with default values to help you get started quickly. These values can be managed in **Properties** tabs of WSE Manager. Others properties must be manually added in the configuration XML files. > **Note**: Only administrators with advanced permissions can access the **Properties** tab. ### Managing properties with WSE Manager To add a custom property using WSE Manager, you must specify the following information: - **Path** - The tag to which the new property will be added. For example, the path `/Root/Application/LiveStreamPacketizer` will add the value to the `` tag's `` element in the `Application.xml` file. - **Name** - The property's name. - **Type** - The type of value the property will support. This can be `Boolean`, `Integer`, or `String`. - **Value** - The property's value. ### Managing properties in XML To [add a custom property](https://www.wowza.com/docs/add-a-custom-property) to an XML file, add the property's name, type, and value directly to the appropriate location within the file. For example, to add a property to the `LiveStreamPacketizer` tag, you would: 1. Open the `[install-dir]/conf/[application]/Application.xml` file. 2. Locate the `` tag. 3. Locate the `` tag. 4. Add a new `` definition. ```xml XML snippet example ... ... ... ``` ### Java API parameters All properties in WSE map to parameters in the [WSE Java API](https://www.wowza.com/docs/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 property has a default value which you can modify in the following ways: - By using WSE Manager - By editing the `Application.xml` file - By using the [`setMaxChunkDuration`](https://www.wowza.com/resources/serverapi/4.9.1/com/wowza/wms/httpstreamer/cupertinostreaming/livestreampacketizer/LiveStreamPacketizerCupertino.html#setMaxChunkDuration(int)) method in the `LiveStreamPacketizerCupertino` class of the WSE Java API ## Media types Media types are an important part of streaming. WSE 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 with a prefix to the stream name which tells players how to play the stream. This is useful for playing VOD content and groups of stream renditions together. For example, to play the MP4 file `myStream.mov`, you would add the `mp4:` prefix, making the file name `mp4:myStream.mov`. The following media type prefixes are supported: - **`mp4:`** – VOD streaming. This is the default value. - **`flv:`** – VOD streaming. When the `flv:` prefix is specified for a recorded live stream, 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](https://www.wowza.com/docs/how-to-do-adaptive-bitrate-streaming) for live and VOD content. The `smil:` prefix is used to playback content in SMIL files. 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 bitrate renditions. - **`ngrp:`** – Adaptive bitrate for live streaming. The WSE transcoder feature uses a templating system to create logical stream name groups for live adaptive bitrate delivery. Stream name groups and SMIL files serve the same purpose. Either method can be used for adaptive playback of live streams. The `ngrp:` 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 WSE Java API can [intercept requests for adaptive bitrate streams](https://www.wowza.com/docs/how-to-use-java-api-calls-to-resolve-smil-file-requests) and provide stream grouping. The `amlst:` prefix indicates that a set of `MediaList` Java objects are being used to provide adaptive bitrate streaming. ## Streaming codecs, protocols, and playback WSE supports a wide variety of [codecs, streaming protocols, and formats](https://www.wowza.com/docs/understanding-protocols-and-formats-supported-by-wowza-streaming-engine) which enables us to support live and on-demand streams on desktops, mobile devices, set-top boxes, and more. **Not all video and audio codecs are mutually compatible and not all codecs are supported by all protocols and formats.** By default, WSE is configured to enable delivery and playback of ingested streams over MPEG-DASH, HLS, RTMP, and RTSP/RTP. [WSE transcoder](https://www.wowza.com/docs/about-wowza-transcoder) allows you to transcode and transrate streams for different codec and protocol combinations. ### Playback URLs WSE supports live and on-demand stream playback on many players. All WSE streaming is [URL-based](https://www.wowza.com/docs/about-playing-wowza-streaming-engine-streams) and may vary by protocol.