Application.xml configuration reference

A Wowza Streaming Engine™ (WSE) application is a contextual media streaming environment. Each app specifies a set of operating properties and provides a namespace and context for streaming. Users may create as many applications as needed, for example a live streaming app, a video on demand (VOD) app, or apps for transcoding, nDVR, and re-streaming.

When a new app is created, a configuration file is created to store its settings. The app's configuration file is called Application.xml and is located in the [install-dir]/conf/[app-name] directory. We recommend using WSE Manager to change an app's settings, but you may also update an app's Application.xml file directly.

The Application.xml file located in [install-dir]/conf is the server's application configuration template. It is used as the template for new apps' configuration settings.

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, then the default name _definst_ is used. In many scenarios, a single application instance is used per-application and the name is never referenced and defaults to _definst_.

Note: The properties described below apply to the latest WSE version. Some properties may not apply to earlier versions.

Contents


Application element


The <Application> element contains the children listed in the table below.

Element Type Description
<Name> String The name of the application. Required.
<AppType> String The type of the application, such as live, vod, livehttporigin, vodhttporigin, liveedge, vodedge. Required.
<Description> String A text description of the application. Optional.
<ApplicationTimeout> Integer Milliseconds the server waits before shutting down an app with no client connections. Set to 0 to run until the virtual host shuts down. If unset, the VHost.xml value applies.
<PingTimeout> Integer Milliseconds the server waits for a ping response from the client. This is an RTMP internal ping, not ICMP. Set to 0 to wait indefinitely. If unset, the VHost.xml value applies.
<ValidationFrequency> Integer Milliseconds the server waits during server-to-client validation, which sends a ping request to the client. Validation runs only if the client stops sending data. Set to 0 to disable validation. If unset, the VHost.xml value applies.
<MaximumPendingWriteBytes> Integer Maximum bytes allowed to queue while waiting to be sent. A client connection that exceeds this is terminated. Set to 0 for no maximum. If unset, the VHost.xml value applies.
<MaximumSetBufferTime> Integer Maximum milliseconds honored for client-side NetStream.setBufferTime(seconds) calls. The check guards against spoofing tools that request a very large client-side buffer to make the server send all media data at once, consuming Java heap memory. Set to 0 to turn off the check. (Default: 60000)
<MaximumStorageDirDepth> Integer Maximum number of subfolders allowed in any storage path. Helps protect against symbolic link loops.
<Connections> Container Connection restrictions. See the Connections elements table for available child elements.
<Streams> Container Stream configuration for the application. See the Streams elements table for available child elements.
<Transcoder> Container Transcoder configuration. See the Transcoder elements table for available child elements.
<DVR> Container DVR recording configuration. See the DVR elements table for available child elements.
<TimedText> Container Timed text captioning configuration. See the TimedText elements table for available child elements.
<HTTPStreamers> String Comma-separated list of HTTP streaming protocols to enable. Can contain none, one, or more of the following values:
  • cupertinostreaming: Cupertino: HTTP streaming to iOS devices
  • mpegdashstreaming: MPEG-DASH: HTTP streaming to MPEG-DASH players
  • dvrchunkstreaming: DVR: Enable streaming from origin to edge
<MediaCache> Container Media Cache source access for VOD edge applications.
<MediaCache>/<MediaCacheSourceList> String Comma-separated list of Media Cache sources this VOD edge application can access. Use the wildcard (*) to allow every source configured on the system. Media Cache sources are HTTP-based servers and network-attached file systems that supply file-based content for re-streaming. For example, a VOD application on an Amazon EC2 instance could include amazons3 or dvrorigin.
<SharedObjects> Container How an application accesses remotely stored object data.
<SharedObjects>/<StorageDir> String Full path to the directory where the application reads and writes remotely stored object data. If unset, the application uses:
  • %WMSCONFIG_HOME%/applications/[application]/sharedobjects/[appinstance]

where %WMSCONFIG_HOME% is the WMSCONFIG_HOME environment variable, [application] is the application name, and [appinstance] is the application instance name. Accepts directory path variables.

<Client> Container Client connections to streams. See the Client elements table for available child elements.
<RTP> Container RTSP/RTP streaming configuration. See the RTP elements table for available child elements.
<WebRTC> Container WebRTC publish and playback. Setup requires RTP tuning properties in addition to WebRTC settings. See the WebRTC elements table for available child elements.
<SRTListener> Container Used with SRT listener mode to configure a global or per-user passphrase for publishing and encrypting SRT streams. The passphrase must match on the source and destination devices. See the SRTListener elements table for available child elements.
<MediaCaster> Container Restreaming with the MediaCaster system. See the MediaCaster elements table for available child elements.
<MediaReader> Container A container element for custom MediaReader <Property> elements. MediaReader reads files for recording and VOD playback.
<MediaWriter> Container A container element for custom MediaWriter <Property> elements. MediaWriter writes files for recording and VOD playback.
<LiveStreamPacketizer> Container A container element for custom live stream packetizer <Property> elements.
<HTTPStreamer> Container A container element for custom HTTP streamer <Property> elements.
<Manager> Container A container element for custom WSE Manager <Property> elements.
<Repeater> Container Origin URL and query string for using the application as a live stream repeater.
<Repeater>/<OriginURL> String Origin URL used by the live stream repeater. For a DVR repeater, this is the URL of the DVR origin server to retrieve audio and video chunks from.
<Repeater>/<QueryString> String Query string used to connect to the origin. Can pass secure URL parameters for security validation.
<StreamRecorder> Container A container element for custom stream recorder <Property> elements.
<Modules> Container Modules available to this application. See the Module elements for available child elements.
<Properties> Container A container element for custom application <Property> elements

Connections element

The <Connections> element contains the children listed in the table below.

Element Type Description
<AutoAccept> Boolean Whether the application automatically accepts Adobe Flash client playback connection requests. If true, all requests are accepted automatically. If false, the application must call client.acceptConnection() server-side to accept a request.
<AllowDomains> String

Comma-delimited list of domain names or IP addresses whose RTMP client connections are accepted. Each entry is the domain or IP address of an Adobe Flash SWF file that connects to WSE, or the IP address of a connecting client. If unset, connections from all domains and IP addresses are accepted.

For example, setting AllowDomains to www.mycompany.com restricts access to clients from that domain. Use the wildcard (*) to match partial values, such as *.mycompany.com. Filter by IP address when a client-side live source doesn't provide a valid referrer.

Allow-domains processing runs just before the onConnect event method. For finer-grained access control, override the onConnect event handler in a custom module and supply your own filtering.

Streams element

The <Streams> element contains the children listed in the table below.

Element Type Description
<StreamType> String Default stream type for this application. Stream types control live, VOD, recording, and origin/edge streaming. Example values:
  • default: VOD
  • file: VOD
  • live: Deliver live streams; best for one-to-many streaming of live events
  • live-lowlatency: Deliver live streams over RTMP; best for one-to-one or one-to-few video/audio chat applications. Reduces frame buffering on receipt from the encoder.
  • live-record: Same as live but the stream is also recorded
  • live-record-lowlatency: Same as live-lowlatency but the stream is also recorded
  • liverepeater-edge: Deliver live streams across multiple WSE servers in an origin/edge configuration; use to configure the edge applications
  • liverepeater-edge-lowlatency: Deliver live streams across multiple WSE servers in an origin/edge configuration; use to configure edge applications when low latency is important
  • liverepeater-edge-origin: Deliver live streams across multiple WSE servers in an origin/edge/edge configuration; use to configure a middle-edge application
  • record: Video recording
  • rtp-live: Re-stream RTSP/RTP, native RTP, or MPEG-TS streams
  • rtp-live-lowlatency: Re-stream RTSP/RTP, native RTP, or MPEG-TS streams when low latency is important. Reduces frame buffering on receipt from the encoder.
  • rtp-live-record: Same as rtp-live but the stream is also recorded
  • rtp-live-record-lowlatency: Same as rtp-live-lowlatency but the stream is also recorded
  • shoutcast: Re-stream SHOUTcast/Icecast MP3 or AAC+ audio streams
  • shoutcast-record: Same as shoutcast but the stream is also recorded
<StorageDir> String Full path to the directory where the application reads and writes media files.
<KeyDir> String Directory where HLS (Cupertino) AES-128 encryption keys are stored.
<LiveStreamPacketizers> String Comma-separated list of HTTP streaming packetization schemes for live source streams. Packetization makes a stream available for HTTP streaming and enables DVR. Can contain none, one, or more of the following values:
  • cupertinostreamingpacketizer: “Cupertino” HLS streaming using MPEG-TS container (iOS playback)
  • cmafstreamingpacketizer: HLS and MPEG-DASH streaming using fMP4 container
  • mpegdashstreamingpacketizer: MPEG-DASH streaming using fMP4 container
  • cupertinostreamingrepeater: Cupertino: Live stream repeater for iOS devices
  • mpegdashstreamingrepeater: MPEG-DASH: Live streaming repeater for MPEG-DASH players
  • dvrstreamingpacketizer: Wowza nDVR: Streaming
  • dvrstreamingrepeater: Wowza nDVR: Live stream repeater
<Properties> Container A container element for custom stream <Property> elements.

Transcoder element

The <Transcoder> element contains the children listed in the table below.

Element Type Description
<LiveStreamTranscoder> String Default transcoder handler for this application. Set to transcoder to enable the transcoder. If unset, live source streams aren't transcoded.
<Templates> String

Comma-separated list of template names to search when matching a live source stream to a Transcoder template. WSE uses the first template file in the list that exists; if none exist, the stream isn't transcoded. Defaults to ${SourceStreamName}.xml, transrate.xml.

The default first entry uses ${SourceStreamName}, so a template named [stream-name].xml matches the live source stream name, falling back to transrate.xml. ${SourceStreamName} is the only supported variable.

<ProfileDir> String Path to the Transcoder profiles, such as {com.wowza.wms.context.VHostConfigHome}/transcoder/profiles.
<TemplateDir> String Full path to the directory where the application looks for Transcoder templates. By default WSE looks in [install-dir]/transcoder/templates. To define a per-application folder, use directory path variables, for example ${com.wowza.wms.context.VHostConfigHome}/conf/${com.wowza.wms.context.Application}/profiles.
<Properties> Container A container element for custom transcoder <Property> elements.

DVR element

The <DVR> element contains the children listed in the table below.

Element Type Description
<Recorders> String Name of the default DVR recorder for this application.
<Store> String Set to dvrfilestorage on a single server or an origin. Leave empty on edge servers.
<WindowDuration> Integer Seconds of material available for DVR playback. Defaults to 0, which means there's no DVR window, so all data is available.
<StorageDir> String Full path to the directory where the application reads and writes Wowza nDVR data. Accepts directory path variables.
<ArchiveStrategy> String What the DVR store does with an old stream when a new stream with the same app instance and stream name starts. Defaults to append. Accepts one of the following values:
  • append: Append the new stream information to the end of the previous store.
  • delete: Delete the old DVR store and start a new one.
  • version: Create a new version of the DVR store.
<Properties> Container A container element for custom DVR recording <Property> elements.

TimedText element

The <TimedText> element contains the children listed in the table below.

Element Type Description
<VODTimedTextProviders> String Comma-separated list of video-on-demand (VOD) caption providers.
<Properties> Container A container element for custom Timed text <Property> elements.

Client element

The <Client> element contains the children listed in the table below.

Element Type Description
<IdleFrequency> Integer Milliseconds between idle events, which are the heartbeat of RTSP/RTP streaming and control how often new data is sent to the player. Set to -1 to use the VHost.xml value.
<Access> Container Default access an Adobe Flash client connection has to assets associated with a WSE application. See the Access elements table for available child elements.

Access element

The <Access> element contains the children listed in the table below. An individual client's access can be modified through the WSE Java API. This is most commonly done in the onConnect or onConnectAccept event handler.

To control access, each of these settings compares the asset name (stream name or shared object name) to a comma-delimited list of names. If any part of the asset name matches one of the elements in the list, then the requested access is granted. The values are case-sensitive. If no parameter value is specified, then access is denied to all clients. If the parameter value is set to the wildcard (*) character, then access is granted to all clients.

Element Type Description
<StreamReadAccess> String Controls access to view or listen to a NetStream object.
<StreamWriteAccess> String Controls access to write or publish to a NetStream object.
<StreamAudioSampleAccess> String Controls access to call SoundMixer.computeSpectrum() to grab a NetStream object's waveform data.
<StreamVideoSampleAccess> String Controls access to call BitmapData.draw() to snapshot a NetStream object.
<SharedObjectReadAccess> String Controls access to read values from a RemoteSharedObject.
<SharedObjectWriteAccess> String Controls access to write values to a RemoteSharedObject.

For example, if StreamReadAccess is set to testa/testb;testc, then the following stream names would be granted the following access:

Stream Name Access Status
testc Granted Access
testc/test Granted Access
testC/test Denied Access (incorrect case)
testa/testb Granted Access
testa/testb123 Granted Access
testa/testb/file123 Granted Access
testa/test Denied Access (incomplete match)

RTP element

The <RTP> element contains the children listed in the table below.

Element Type Description
<Authentication> Container Authentication for RTSP connections.
<Authentication>/<PublishMethod> String Authentication method used to secure source RTSP connections: none, basic, digest, or block.
<Authentication>/<PlayMethod> String Authentication method used to secure playback RTSP connections: none, basic, or digest.
<AVSyncMethod> String Method used to synchronize the audio and video channels when receiving an RTP stream. Defaults to senderreport. Example values:
  • senderreport: Uses the Sender Report (SR) packets sent over the Real Time Control Protocol (RTCP) channel.
  • rtptimecode: Assumes RTP timecodes are absolute values.
  • systemclock: Synchronizes based on the system clock.
<MaxRTCPWaitTime> Integer Maximum milliseconds WSE waits to receive an SR packet over the RTCP channel. If none arrive in that time, the server falls back to the rtptimecode method.
<IdleFrequency> Integer Milliseconds between RTP idle events, which send new media data and events to RTP or MPEG-TS sessions.
<RTSPSessionTimeout> Integer Milliseconds after which an idle RTSP session is considered stale and disconnected. WSE monitors RTSP sessions for periodic RTSP messages or RTCP receiver packets over RTP, and disconnects a session that sends none within this period. Set to 0 to turn off idle disconnect.
<RTSPMaximumPendingWriteBytes> Integer Maximum bytes that can wait to be written to an RTSP session. WSE tracks pending bytes on the RTSP/TCP connection and disconnects a session that exceeds this value. Set to 0 to turn off monitoring.
<RTSPBindIpAddress> String IP address WSE binds to when delivering RTP packets over UDP. With network address translation (NAT) routing, set this to the internal IP address of the network interface mapped to the external IP address. Without NAT, set it to the server's external IP address.
<RTSPConnectionIpAddress> String IP address exchanged in the Session Description Protocol (SDP) data on the (c=) line. Set this to the server's external IP address.
<RTSPSsrcCheck> Boolean Enables the Synchronization Source identifier (SSRC), which distinguishes one stream from another within the same RTP session. Set to false to disable SSRC checks when streaming over RTSP. New applications don't include this element, but it's present and set to true in the pre-configured live application.
<RTSPOriginIpAddress> String IP address exchanged in the Session Description Protocol (SDP) data on the (o-) line. Set this to the server's external IP address.
<IncomingDatagramPortRanges> String

UDP port ranges this application can use for stream ingestion. Accepts single ports and ranges. This example enables port 10000 and ports 20000 through 20004:

<IncomingDatagramPortRanges>10000, 20000-20004</IncomingDatagramPortRanges>

Applies only to ingestion that pulls streams with Session Description Protocol (SDP) files or MPEG-TS udp:// URLs. These values don't affect UDP ports assigned dynamically during RTSP port negotiation.

<Properties> Container A container element for custom RTP <Property> elements.

WebRTC element

The <WebRTC> element contains the children listed in the table below.

Element Type Description
<EnablePublish> Boolean Enable WebRTC publishing to this application.
<EnablePlay> Boolean Enable WebRTC playback from this application.
<EnableQuery> Boolean Enable querying of published stream names for this application.
<IceCandidateIpAddresses> String IP address, transport, and port used for WebRTC streaming. UDP format: [wowza-streaming-engine-external-ip-address],udp. TCP format: [wowza-streaming-engine-external-ip-address],tcp,[port]. For multiple IP addresses, use a pipe character to separate the lists.
<UDPBindAddress> String Local IP address of the network card you want to use for WebRTC UDP traffic.
<PreferredCodecsAudio> String Comma-separated list of audio codecs, in order of preference, for stream ingestion.
<PreferredCodecsVideo> String Comma-separated list of video codecs, in order of preference, for stream ingestion.
<DebugLog> Boolean Enable WebRTC debug logging.
<Properties> Container A container element for custom WebRTC <Property> elements. See the WebRTC properties table for a full list of available configuration options.

SRTListener element

The <SRTListener> element contains the children listed in the table below.

Element Type Description
<Authentication> Container Authentication for SRT connections.
<Authentication>/<PublishMethod> String Authentication method used to secure source SRT connections:
  • basic: Enable SRT listener mode for your application and require a per-user passphrase.
  • none: Enable SRT listener mode for your application and use a global passphrase if set in the VHost.xml.
  • block: Disable SRT listener mode for your application.

To bypass encryption, use none and don't specify an srtPassPhrase in the VHost.xml

MediaCaster element

The <MediaCaster> element contains the children listed in the table below.

Element Type Description
<RTP> Container Restreaming with the rtp MediaCaster type.
<RTP>/<RTSP> Container Restreaming with RTSP/RTP streams.
<RTP>/<RTSP>/<RTPTransportMode> String RTSP flavor used to re-stream an RTSP/RTP source such as an IP camera. Set to interleave for RTSP/RTP interleaved (RTP over TCP), or udp for non-interleaved mode (RTP over UDP).
<StreamValidator> Container Monitoring of native RTP and MPEG-TS encoder streams, resetting them if they become unhealthy. See the StreamValidator elements table for available child elements.
<Properties> Container A container element for custom MediaCaster <Property> elements.

StreamValidator element

The <StreamValidator> element contains the children listed in the table below.

Element Type Description
<Enable> Boolean Set to true to activate the StreamValidator.
<ResetNameGroups> Boolean If true, resetting a stream that belongs to a MediaStreamNameGroup resets every stream in the group. If false, only the unhealthy stream resets.
<StreamStartTimeout> Integer Timeout in milliseconds for the first packet of any type (audio, video, or data).
<StreamTimeout> Integer Timeout in milliseconds for packets of any type (audio, video, or data) after the first.
<VideoStartTimeout> Integer Timeout in milliseconds for the first video packet.
<VideoTimeout> Integer Timeout in milliseconds for video packets after the first.
<AudioStartTimeout> Integer Timeout in milliseconds for the first audio packet.
<AudioTimeout> Integer Timeout in milliseconds for audio packets after the first.
<VideoTCToleranceEnable>* Boolean Set to true to monitor video timecode jumps.
<VideoTCPosTolerance>* Integer Maximum allowable positive gap, in milliseconds, between the current and previous video packet.
<VideoTCNegTolerance>* Integer Maximum allowable negative gap, in milliseconds, between the current and previous video packet.
<AudioTCToleranceEnable>* Boolean Set to true to monitor audio timecode jumps.
<AudioTCPosTolerance>* Integer Maximum allowable positive gap, in milliseconds, between the current and previous audio packet.
<AudioTCNegTolerance>* Integer Maximum allowable negative gap, in milliseconds, between the current and previous audio packet.
<DataTCToleranceEnable>* Boolean Set to true to monitor data timecode jumps.
<DataTCPosTolerance>* Integer Maximum allowable positive gap, in milliseconds, between the current and previous data packet.
<DataTCNegTolerance>* Integer Maximum allowable negative gap, in milliseconds, between the current and previous data packet.
<AVSyncToleranceEnable> Boolean Set to true to monitor audio/video sync timecode jumps.
<AVSyncTolerance> Integer Allowable timecode difference between the current and previous packet.
<DebugLog> Boolean Set to true to turn on verbose debug logging.

*Note: The positive and negative tolerances define a single window. For example, if <VideoTCPosTolerance> is set to 3000 and <VideoTCNegTolerance> is set to -500, the timecode difference between an arriving video packet and the previous one must fall between -500 and 3000 milliseconds. Set any timeout or tolerance to 0 to turn that test off.

Modules

The <Modules> element contains the children listed in the table below.

Element Type Description
<Module> Container Identifies the module.
<Module>/<Name> String Identifier for the module. Required.
<Module>/<Description> String A text description of the module. Optional.
<Module>/<Class> String The full package name and class name of the module.

Property element

The <Property> element contains the children listed in the table below. Application properties are copied to child application instances at creation, and are available in the Java API through IApplicationInstance.getProperties().

Element Type Description
<Property> Container The container element for a single custom property.
<Property>/<Name> String Name of the property.
<Property>/<Value> Value of the property as defined by the type.
<Property>/<Type> String Type of property (Integer, Boolean, or String).

Directory path variables

You can use these variables in any directory path setting, such as <StorageDir> and <TemplateDir>.

Variable Resolves to
${com.wowza.wms.AppHome} Application home directory
${com.wowza.wms.ConfigHome} Configuration home directory
${com.wowza.wms.context.VHost} Virtual host name
${com.wowza.wms.context.VHostConfigHome} Virtual host config directory
${com.wowza.wms.context.Application} Application name
${com.wowza.wms.context.ApplicationInstance} Application instance name