Stream targets overview

A Wowza Streaming Engine™ (WSE) stream target allows an app to send a live stream to distributed destinations such as content delivery networks (CDNs) and multi-protocol services. The destination distributes your live stream, allowing you to scale your WSE implementation, manage computing resources, and adjust delivery options. With WSE stream targets, you can easily send a live stream to:

Stream targets can be configured using WSE Manager or the WSE REST API, or by editing the PushPublishMap.txt file directly.

Note: CDNs don't support adaptive bitrate (ABR) streaming based on SMIL files. To send an ABR stream to a CDN, you must use the transcoder to produce renditions with the same stream name prefix.

Send a stream to a destination


The easiest way to configure a stream target is with WSE Manager, as you don't have to install any modules or manually edit the map file. In WSE Manager, stream targets are displayed alphabetically by destination type, protocol, adaptive group name, and stream target name. Each stream target has a status that is automatically updated. Setting up a stream target varies based on your workflow. For detailed instructions on a specific implementation, see the relevant article below.

Note: Targets defined as RTMP appear as generic RTMP targets, even if they point to a BitGravity or YouTube destination.

Edit the push publishing map file


The PushPublishMap.txt map file stores the configuration that maps live source streams to destinations. You can configure the map file using WSE Manager's stream targets feature or by editing the map file directly.

Change the map file's location

When you enable the stream targets feature for an app, a stream target map file called PushPublishMap.txt is automatically created in the [install-dir]/conf/[app-name] directory. You can change the location of an app's stream target map file by changing the value of the custom pushPublishMapPath property in WSE Manager or by updating it in the app's Application.xml configuration file.

Change the map file's location with WSE Manager

  1. Open WSE Manager.
  2. Click the Applications tab.
  3. In the contents panel, click the name of your live app.
  4. Click the Properties tab.
  5. In the Quick Links list, click Custom.
  6. Click Edit.
  7. Change the value of pushPublishMapPath to the updated location.
  8. Click Save.
  9. Restart the app to apply the changes.

About map entries

Each stream target entry represents a single destination for a source stream or group of streams. To stream to multiple destinations, each destination must have its own stream target entry. If a stream target is added or modified while WSE is running, the change doesn't affect active streams, only streams received after the map file is updated.

A stream target map entry has the following format:

## stream target format
[src-stream-name]={"profile":"[profile]", [additional-configuration-items]}

For example, to send a stream called myStream via RTMP to another WSE server, add the entry below:

## send RTMP stream to WSE server
myStream={"profile":"rtmp", "streamName":"myStreamRTMP", "host":"wowza.myserver.com", "application":"live", "userName":"myuser", "password":"mypassword"}

To send a stream to multiple destinations, create a stream target for each destination. For example, to send a stream named myStream to a remote WSE server and deliver it as multicast using MPEG-TS, add the following entries to the map file:

## send myStream to two destinations
myStream={"profile":"rtmp", "streamName":"myStream", "host":"wowza.myserver.com", "userName":"myUser", "password":"myPassword"}
myStream={"profile":"mpegts", "streamName":"myStreamMPEGTS", "host":"239.1.1.1", "port":"10000"}

For more examples, see Sample map file entries for stream target destinations.

Stream target profiles

Each stream target must include a profile. The profile determines how the stream is sent to its destination and which additional configurable parameters are available. The available profiles are listed below.

rtmp, rtmp-akamai, and rtmp-limelight profile parameters

Name Description
streamName Destination stream name (default is the source stream name). A destination stream name is required for rtmp-akamai profiles. See Akamai RTMP for more information.
application Destination application name (default is _defapp_).
appInstance Destination application instance name (default is _definst_).
host Destination hostname or IP address (default depends on the profile).
port Destination port number (default is 1935).
userName Destination server username (needed if the destination requires authentication).
password Destination server password (needed if the destination requires authentication).
secureTokenSharedSecret SecureToken value to use to connect to the remote server (needed if the destination is configured to use SecureToken).
adaptiveStreaming Set to true if doing adaptive bitrate streaming (default is false). Automatically sets sendOriginalTimecodes to true and originalTimecodeThreshold to 0x100000.
sendFCPublish Set to true to call the FCPublish command before publishing begins (default is true).
sendReleaseStream Set to true to call the releaseStream command before publishing begins (default is true).
sendStreamCloseCommands Set to true to send stream close commands when publishing stops (default is true).
removeDefaultAppInstance Set to true to remove the _definst_ instance name from the connect command (default is true).
sendOriginalTimecodes Set to true to send the source stream's absolute timecodes (needed for adaptive bitrate streaming; default is false). Overrides the value set by adaptiveStreaming = true.
originalTimecodeThreshold Used when sending original timecodes to a lower timecode magnitude (needed when Adobe Media Server is the destination server; default is 0). Overrides the value set by adaptiveStreaming = true.
connectionFlashVersion Flash version to report as part of connection information (default depends on profile). The connectionFlashVersion value accepts the following variables:
${com.wowza.wms.pushpublish.CurrentFMLEVersion} - Adobe Flash Media Live Encoder version number: FMLE/3.0 (compatible with FMSc/1.0)
${com.wowza.wms.pushpublish.PushPublishVersion} - WSE push publishing version
queryString Query string data added to the URL as part of connection information (default is [no-value]).
debugLog Set to true to turn on debug connection logging (default is false).
debugPackets Set to true to turn on verbose packet logging (default is false).
localBindAddress Local network interface to bind the output stream connection to, in the form of an IP address (default is the system default interface).
sendSSL Set to true to enable WSE to send secure streams to the stream target destination (default is false). When enabled, this configuration appears on the Advanced tab for RTMP-based stream targets in WSE Manager.
removeMetadataObjects Set to true to enable the removal of all array and object data types sent to the destination in RTMP onMetaData messages.
filteredMetadataItems Specifies a pipe-delimited list ("|") of named metadata items to remove from all RTMP onMetaData messages sent to the destination.
akamai.hdNetwork Set to false to allow plain (non-[name]_[angle]_[bitrate]) stream names for the Akamai AMS network (rtmp-akamai only; default is true).
akamai.streamId Destination StreamId (rtmp-akamai only).
akamai.sendToBackupServer If set to true, the destination is set to the backup entry point (rtmp-akamai only; default is false).

cupertino-cloudstorage profile parameters

Note: For more information about using this profile, see Send Apple HLS content to Amazon S3 using Wowza Streaming Engine.
Name Description
entryName
(required)
A descriptive, unique name for the map entry and your stream target.
streamName
(required)
An asset is created for each streamName in the S3 bucket. All entries in an adaptive bitrate set (adaptiveGroup) must have unique streamName values. We recommend including the bitrate or vertical resolution of the stream, such as myStream_720p. It's sufficient to set the streamName to the same value as the source stream name.
adaptiveGroup
(optional)
The name of the adaptive group to which this stream target belongs. Groups all assets together into one stream during playback.
cloudstorage.provider
(required)
Defines the intended cloud storage provider for the stream destination. Set to S3 for this profile.
cloudstorage.bucketName
(required)
The name of the AWS bucket where the HLS content will be stored.
cloudstorage.region
(required)
The AWS bucket region.
cloudstorage.accessID
(required)
The AWS access ID.
cloudstorage.secretAccessKey
(required)
The AWS secret access key.
cloudstorage.bucketRootPath The root path within the storage bucket.
cloudstorage.customheader.[type].[header] Adds a custom HTTP header to the file. Replace [type] with the kind of file that gets the header: all, playlist, chunklist, or media. Replace [header] with the header name. The property value is the header value.
cloudstorage.urlTemplate
(optional)
The upload endpoint for S3-compatible storage, specified as a host name with an optional port and path. For example, for Fastly Object Storage: ${region}.object.fastlystorage.app/${bucketName}. Don't include a scheme; cloudstorage.method determines whether HTTP or HTTPS is used. The template can include the variables ${bucketName}, ${region}, ${serviceType}, and ${domainSuffix}.
cloudstorage.domainSuffix
(optional)
The domain that follows the region in the Amazon S3 host name. The default is amazonaws.com. This value is also available as the ${domainSuffix} variable in cloudstorage.urlTemplate. (Added in WSE 4.12.1.)
cloudstorage.acl
(optional)
The canned ACL sent with each uploaded file in the x-amz-acl header. The default is public-read. Set to none to send no ACL header. Set to none if ACLs are disabled on the bucket. (Added in WSE 4.12.1.)
cloudstorage.method
(optional)
The protocol used to upload files. Valid values are https and http. (Default: https.) (Added in WSE 4.12.1.)
playbackHost
(optional)
The host name, with an optional port, used in playback URLs. For example, cdn.example.com or cdn.example.com:8443. Don't include a scheme or path. When set, playback URLs use [playbackHost]/[cloudstorage.bucketRootPath]/, with no bucket name in the path. If not set, playback URLs use thecloudstorage.urlTemplate endpoint or the Amazon S3 bucket URL in that order.
playbackSSL
(optional)
Set to false to use HTTP instead of HTTPS in playback URLs built from playbackHost or cloudstorage.urlTemplate. The default is true.
cupertino.renditions
(optional)
Renditions to include. Valid values are audiovideo, audioonly, and videoonly. If not specified, defaults to audiovideo. This setting is used primarily for single-stream playback, but multiple renditions can be specified in a pipe-delimited list ("|"). For example, if you turn on the LiveStreamPacketizer property cupertinoCreateAudioOnlyRendition, you can specify audiovideo|audioonly. This pushes both an audio/video stream and an audio-only stream, providing Apple App Store compliance.
cupertino.audiotagtype
(optional)
Only used if the cupertino.renditions parameter is set to audioonly. Defines how the specific audio tracks are added to the master playlist so that audio-only streams or Apple-compliant streams play back correctly. Possible values are media and stream_inf. Both of these values can be set simultaneously using a pipe-delimited list ("|").
  • media: The audio rendition is added to the playlist using an EXT-X-MEDIA tag. This option is typically used when the audio rendition is part of a group of alternative audio tracks. At least one of the renditions in the alternative audio track group is expected to include an accompanying video track.
  • stream_inf: The audio rendition is added to the playlist using an EXT-X-STREAM-INF tag. Use this for audio-only streams or for Apple-compliant streams that require a low-bitrate, audio-only rendition.
  • media|stream_inf: The audio rendition is added to the playlist twice: once with the EXT-X-MEDIA tag and once with the EXT-X-STREAM-INF tag. This option is used when the stream provides both alternative audio tracks and an Apple-compliant audio rendition, allowing the player to switch between the alternatives and the compliant rendition as needed.
If cupertino.audiotagtype is not set, its behavior depends on other settings. When the rendition is not part of an adaptive group and either cupertino.renditions is not set or includes videoonly, the audio rendition is added to the master playlist using an EXT-X-STREAM-INF tag. Otherwise, it's added using an EXT-X-MEDIA tag.
debugLog
(optional)
Set to true to turn on debug connection logging. The default is false.
http.playlistCount
(optional)
The number of chunks to maintain in the playlist when it's pushed. The default value is 0, meaning the live stream packetizer PlaylistChunkCount property value in the application configuration specifies the playlistCount. For the cupertinoPlaylistChunkCount property, the default value is 3.
http.playlistDuration
(optional)
The target length of each media playlist, in seconds. This value will be used, alongside chunk duration, to calculate the number of segments in the playlist.
http.relativePlaylists
(optional)
Set to true to use only relative URL references in the playlists and manifests sent to the destination. The default is false.
http.playlistAcrossSessions
(optional)
Set to true to maintain playlists across push publishing sessions. The default is false.
http.playlistTimeout
(optional)
Time in milliseconds that a cross-session playlist is maintained. The default is 120000 (2 minutes).
cupertino.language
(required)
Added in WSE 4.9.3. It accepts an ISO 639 two- or three-letter language code and displays that correctly in the master playlist. In the player's audio track selector, this setting generates the proper name for the alternative audio track using a label with the native language.
cupertino.audioName
(optional)
Added in WSE 4.9.3. Overrides the automatic name setting for cupertino.language when applicable and can be used to manually set the NAME tag in the master playlist.
cupertino.audioGroupName
(optional)
Added in WSE 4.9.3. Can be used to override the default audioGroup name in the master playlist when applicable.

cupertino-akamai and mpegdash-akamai profile parameters

Note: Most of the parameters in the following table can be used with all related profiles that have the cupertino or mpegdash prefixes.
Name Description
streamName
(required)
Destination stream name. See URL formats. All entries in an adaptive bitrate set (adaptiveGroup) must have unique streamName values. We recommend including the bitrate or vertical resolution of the stream, such as myStream_720p. It's sufficient to set the streamName to the same value as the source stream name.
host For Akamai MSL 3 networks: The hostname or IP address of the Akamai server that the source stream will be sent to. For targets that use the Akamai MSL 3 network, you must provide either host or akamai.hostId.

Required with Akamai MSL 3 if akamai.hostId is not provided.
cupertino.renditions Renditions to include. Valid values are audiovideo, audioonly, and videoonly. If not specified, defaults to audiovideo.
This setting is used primarily for single-stream playback, but multiple renditions can be specified in a pipe-delimited list ("|"). For example, if you turn on the LiveStreamPacketizer property cupertinoCreateAudioOnlyRendition, you can specify audiovideo|audioonly. This pushes both an audio/video stream and an audio-only stream, providing Apple App Store compliance.
cupertino.playlistCount Deprecated. See http.playlistCount.
cupertino.playlistAcrossSessions Deprecated. See http.playlistAcrossSessions.
cupertino.playlistTimeout Deprecated. See http.playlistTimeout.
http.playlistCount The number of chunks to maintain in the playlist. The default, 0, means that the live stream packetizer PlaylistChunkCount property value in the application configuration specifies the playlistCount:
  • cupertinoPlaylistChunkCount property - default is 3
  • mpegdashPlaylistSegmentCount (formerly mpegdashPlaylistChunkCount) property - default is 5
http.playlistAcrossSessions Set to true to maintain playlists across push publishing sessions. The default is false.
http.playlistTimeout Time in milliseconds that a cross-session playlist is maintained. The default is 120000 (2 minutes).
http.relativePlaylists Set to true to use only relative URL references in the playlists and manifests sent to the destination. The default is false.
http.fakePosts A true/false debug-only parameter that instructs the server to post fake logs for cupertino files to Akamai. Use to isolate internal server errors from Akamai server communication errors. No actual files are pushed, so playback doesn't occur.
debugLog Set to true to turn on debug connection logging. The default is false.
http.writerDebug A true/false debug-only parameter that enables debug logging associated with HTTP connections, including information about failed connections, retries, and socket read/write timing.
akamai.streamId
(required)
Destination Akamai StreamId.
playbackHost For Akamai MSL 4 networks: The hostname or IP address of the server from which the stream will be played.

Required with Akamai MSL 4 if http.relativePlaylists is not enabled (absolute URL references in the playlists and manifests sent to the destination). We recommend providing playbackHost to include this value, rather than a placeholder, in the playback URLs in WSE logs.
Note: For information about MSL 4 playback hostnames, see the Akamai article What is the publishing URL format for Media Services Live 4 (MSL4) Streams? and the Akamai Media Services Live HLS and DASH Ingest User Guide.
akamai.hostId For Akamai MSL 3 networks: The host ID for the provisioned stream as it appears in the Host Name column for the stream configuration in the Luna Control Center. Specifically, the host ID portion of the Akamai hostname is to the left of the first period in the name. For targets that use the Akamai MSL 3 network, you must provide either akamai.hostId or host.

Required with Akamai MSL 3 under the following conditions:
  • if http.relativePlaylists is not enabled
  • if host is not provided and http.relativePlaylists is enabled
We recommend providing akamai.hostId to include this value, rather than a placeholder, in the playback URLs in WSE logs.
akamai.eventName
(optional)
Destination event name.
adaptiveGroup
(optional)
The name of the adaptive group to which this stream target belongs.

Note: Prior to WSE 4.7.6, this parameter was adaptiveGroups. For more information about the change and its effect on playback URLs, see About adaptive groups in "Stream to the Akamai HD network from Wowza Streaming Engine."

akamai.sendToBackupServer Deprecated. See akamai.destinationServer.
akamai.destinationServer
(optional)
Destination Akamai server(s) to send a redundant stream to for failover in case of a problem with the primary stream. WSE sends the redundant stream to the backup entry point at Akamai. Valid values are primary, backup, or redundant. A single map entry is pushed to both primary and backup servers when redundant is specified. Specifying redundant also generates a separate redundancy manifest/playlist that provides playback URLs for both the primary and backup streams.
mpegdash.videoRepresentationId Defines a unique ID string for the stream's video component, which modifies the ID attribute of the Representation element in the MPEG-DASH MPD manifest file. Can be any string of alphanumeric characters. If not provided, the identifier is constructed using the bitrate value (in kilobits per second) of the video bitstream. For example, video_752kbps.
mpegdash.audioRepresentationId Defines a unique ID string for the stream's audio component, which modifies the ID attribute of the Representation element in the MPEG-DASH MPD manifest file. Can be any string of alphanumeric characters. If not provided, the identifier is constructed using the bitrate value (in kilobits per second) of the audio bitstream. For example, audio_128kbps.
mpegdash.suggestedPresentationDelay Defines the length of time, in milliseconds, that playback should be delayed, which modifies the suggestedPresentationDelay attribute in the MPEG-DASH MPD manifest file. Can be any valid integer. The default value is 6000.
mpegdash.minimumUpdatePeriod Defines the minimum frequency, in milliseconds, at which MPD updates are requested, which modifies the minimumUpdatePeriod attribute in the MPEG-DASH MPD manifest file. Can be any valid integer. The default is the mpegdashSegmentDurationTarget (formerly mpegdashChunkDurationTarget) value, which must be 6000 (6 seconds) when sending an MPEG-DASH stream to Akamai.
mpegdash.minBufferTime Defines the buffer size, in milliseconds, the client should have under ideal circumstances, which modifies the minBufferTime attribute in the MPEG-DASH MPD manifest file. Can be any valid integer. The default value is 6000.

Akamai HTTP protocol playback URL formats (WSE 4.7.6 and later)

Primary stream with akamai.eventName specified:

HLS: http://[akamai.hostId].akamaihd.net/hls/live/[akamai.streamId]/[akamai.eventName]/[streamName]/playlist.m3u8
MPEG-DASH: http://[akamai.hostId].akamaihd.net/dash/live/[akamai.streamId]/[akamai.eventName]/[streamName]/manifest.mpd

Primary stream with akamai.eventName not specified:

HLS: http://[akamai.hostId].akamaihd.net/hls/live/[akamai.streamId]/defEvent/[streamName]/playlist.m3u8
MPEG-DASH: http://[akamai.hostId].akamaihd.net/dash/live/[akamai.streamId]/defEvent/[streamName]/manifest.mpd

Backup stream with akamai.eventName specified:

HLS: http://[akamai.hostId].akamaihd.net/hls/live/[akamai.streamId]-b/[akamai.eventName]/[streamName]/playlist.m3u8
MPEG-DASH: http://[akamai.hostId].akamaihd.net/dash/live/[akamai.streamId]-b/[akamai.eventName]/[streamName]/manifest.mpd

Redundant stream with akamai.eventName not specified:

HLS primary: http://[akamai.hostId].akamaihd.net/hls/live/[akamai.streamId]/defEvent/[streamName]_red/playlist.m3u8
HLS backup: http://[akamai.hostId].akamaihd.net/hls/live/[akamai.streamId]-b/defEvent/[streamName]_red/playlist.m3u8
MPEG-DASH primary: http://[akamai.hostId].akamaihd.net/dash/live/[akamai.streamId]/defEvent/[streamName]_red/manifest.mpd
MPEG-DASH backup: http://[akamai.hostId].akamaihd.net/dash/live/[akamai.streamId]-b/defEvent/[streamName]_red/manifest.mpd

Primary stream in an adaptive group with adaptiveGroup specified:

HLS: http://[akamai.hostId].akamaihd.net/hls/live/[akamai.streamId]/[adaptiveGroup]/playlist.m3u8
MPEG-DASH: http://[akamai.hostId].akamaihd.net/dash/live/[akamai.streamId]/[adaptiveGroup]/manifest.mpd

Backup stream in an adaptive group with adaptiveGroup specified:

HLS: http://[akamai.hostId].akamaihd.net/hls/live/[akamai.streamId]-b/[adaptiveGroup]/playlist.m3u8
MPEG-DASH: http://[akamai.hostId].akamaihd.net/dash/live/[akamai.streamId]-b/[adaptiveGroup]/manifest.mpd
Notes:
  • When both akamai.destinationServer:"redundant" and adaptiveGroup:"[groupName]" are specified, a redundant manifest/playlist won't be generated for the stream; the adaptive group manifest/playlist should instead be used for playback since both the primary and backup streams will be listed there.
  • Akamai documentation indicates that its ingest servers support only 6-second chunk durations for MPEG-DASH. The WSE default chunk duration is 10 seconds for MPEG-DASH. Therefore, we recommend changing the mpegdashSegmentDurationTarget (formerly mpegdashChunkDurationTarget) in WSE Manager to 6000 (6 seconds) for applications configured to send MPEG-DASH streams to Akamai. Also, to ensure that accurate chunk durations are produced, we recommend that the source stream be encoded with 1-, 2-, or 3-second keyframe intervals.

rtp profile parameters

Name Description
streamName Base file name of the SDP file.
host Destination hostname or IP address.
videoPort Destination video port (2 ports are used).
audioPort Destination audio port (2 ports are used).
timeToLive When streaming over multicast, this is the time to live (TTL) value for the UDP packets (default is 63).
streamWaitTimeout At stream startup, the time in milliseconds to wait for the stream to be recognized and accepted (default is 5000).

mpegts profile parameters

Name Description
streamName Base file name of the SDP file.
host Destination hostname or IP address.
port Destination port.
timeToLive When streaming over multicast, this is the time to live (TTL) value for the UDP packets (default is 63).
rtpWrap Set to true to wrap the MPEG-TS stream in RTP (default is false).

wowza-cdn profile parameters

Name Description
profile
(required)
Must be set to wowza-cdn.
childProfile
(optional)
The default value, cupertino-wowza-video, pushes the stream to Wowza Video using HLS. If using the CMAF HLS protocol to send the stream to Wowza Video, set this value to cmaf-wowza-video. For more information, see Push a CMAF HLS stream to Wowza Video using a map file.
sourceStreamName
(required)
Must match the source stream being published. See the optional group.streamMatcher parameter for more information.
WowzaVideo.region
(required)
Must be set to one of these options: us, eu, asia, sa, or india.
group.streamMatcher
(optional)
If not set, defaults to namePrefix. When pushing a single bitrate stream with no transcoding, must be set to nameSingle. For more, see group.streamMatcher options.
group.name
(optional)
If not set, defaults to the entry name.
cupertino.renditions
(optional)
If not set, defaults to audiovideo.
http.playlistCount
(optional)
If not set, defaults to the HLS packetizer setting.
http.playlistAcrossSessions
(optional)
If not set, defaults to false.
http.playlistTimeout
(optional)
If not set, defaults to 120000 (2 minutes).
http.relativePlaylists
(optional)
Not required, but we recommend setting this parameter to true.
debugLog
(optional)
If not set, defaults to false.
debugLogChildren
(optional)
If not set, defaults to false.

The following parameters are added by Wowza Video when the stream target is fully provisioned.

  • wowzaVideo.playbackUrl
  • wowzaVideo.streamTargetId

wowza-video-transcoder profile parameters

Name Description
profile
(required)
Must be set to wowza-video-transcoder.
sourceStreamName
(required)
Must match the name of the incoming source stream that will be published to Wowza Video.
WowzaVideoTranscoder.region
(required)
Corresponds to the broadcast_location parameter in the Wowza Video REST API call that creates the live stream. See the reference documentation for a full definition.
WowzaVideoTranscoder.height
(required)
Corresponds to the aspect_ratio_height parameter in the Wowza Video REST API call that creates the live stream. See the reference documentation for a full definition.
WowzaVideoTranscoder.width
(required)
Corresponds to the aspect_ratio_width parameter in the Wowza Video REST API call that creates the live stream. See the reference documentation for a full definition.
entryName
(required)
A descriptive name for the map entry.
destinationName
(required)
Set to wowzavideocdn for distribution with Wowza CDN.
enabled
(required)
This is set to false by default when the stream target is created in WSE Manager. Corresponds to the Disabled state.

If set to true, the live stream is initialized in Wowza Video, and its respective transcoder is started. This means when a stream target is enabled in WSE, transcoder usage billing applies. To avoid unnecessary billing, stream target entries are automatically disabled by WSE based on different timeouts or errors. However, we recommend manually disabling targets when they're not being used.

The following parameters are added by Wowza Video when the stream target is initialized and fully provisioned:

  • wowzaVideo.liveStreamId: ID generated by the Wowza Video REST API. In WSE Manager, displays the live stream identifier from the URL visible on the live stream details page in Wowza Video. For example, https://app.wowza.com/livestreams/[live-stream-id].
  • wowzaVideo.playbackUrl: Corresponds to hls_playback_url in the Wowza Video REST API. In WSE Manager, displays the HLS playback URL from the live stream details page in Wowza Video.
  • wowzaVideo.liveStreamPlayerUrl: Corresponds to hosted_page.url in the Wowza Video REST API. In WSE Manager, displays the Hosted page link from the Publish live stream modal in Wowza Video. For more, see Share live stream.
  • wowzaVideo.liveStreamEmbedCode: Corresponds to embed_code in the Wowza Video REST API. In WSE Manager, displays the JavaScript embed code from the Publish live stream modal in Wowza Video. For more, see Share live stream.

For more information, see the Wowza Video REST API reference documentation.

shoutcast1 profile parameters

Note: Streaming to SHOUTcast 1 requires WSE 4.5.0 or later.
Name Description
host
(required)
Destination hostname or IP address.
port
(required)
Destination port.
password
(required)
The broadcasting password.
shoutcast.public Set to true to announce the stream in the SHOUTcast directory (default is false).
shoutcast.name The name of the SHOUTcast 1 server, which should be short and reflect a brand or describe the stream's content.
shoutcast.genre The type of audio style being sent to the server. For example, Rock or Classical.
shoutcast.url The absolute URL (i.e., beginning with http:// or https://) sent to the SHOUTcast 1 server. For example, https://www.wowza.com.
shoutcast.aim The AOL Instant Messenger (AIM) number sent to the server when the connection is established.
shoutcast.icq The I Seek You (ICQ) number sent to the server when the connection is established.
shoutcast.irc The Internet Relay Chat (IRC) number sent to the server when the connection is established.

shoutcast2 profile parameters

Note: Streaming to SHOUTcast 2 requires WSE 4.5.0 or later.
Name Description
host
(required)
Destination hostname or IP address.
port
(required)
Destination port.
userName
(required)
The username/authentication hash required to connect to the destination server. This information is obtained from the SHOUTcast 2 configuration utility.
password
(required)
The broadcasting password.
streamName
(required)
The stream mount point/ID assigned when configuring the SHOUTcast 2 server. This is commonly a number and is unique per stream on the destination SHOUTcast server.
shoutcast.public Set to true to announce the stream in the SHOUTcast directory (default is false).
shoutcast.name The name of the SHOUTcast 2 server, which should be short and reflect a brand or describe the stream's content.
shoutcast.genre The type of audio style being sent to the server. For example, Rock or Classical.
shoutcast.url The absolute URL (i.e., beginning with http:// or https://) sent to the SHOUTcast 2 server. For example, https://www.wowza.com.
shoutcast.aim The AOL Instant Messenger (AIM) number sent to the server when the connection is established.
shoutcast.icq The I Seek You (ICQ) number sent to the server when the connection is established.
shoutcast.irc The Internet Relay Chat (IRC) number sent to the server when the connection is established.

srt profile parameters

Notes:
Name Description
sourceStreamName
(required)
Specifies the name of the incoming stream that you specified in WSE when you set up the video source.
host
(required)
Sets the destination hostname or IP address.
port
(required)
Sets the destination port.
srtConnectTimeout (WSE 4.8.5 and later) Specifies the length of time that WSE waits for a target to respond to a connection request, in milliseconds. Default is 3000.
srtFlightFlagSize (WSE 4.8.5 and later) Specifies the maximum number of bytes that can be sent without being acknowledged. Default is 25600.
srtInputBandwidth (WSE 4.8.5 and later) If srtMaximumBandwidth is set to 0, specifies the maximum bandwidth along with the srtOverheadBandwidth value using this formula: max bandwidth = input bandwidth * (100 + overhead bandwidth)/100. If set to 0, then input bandwidth is estimated from the rate of input during transmission. Default is 0.
srtKeyAnnounce (WSE 4.8.5 and later) Sets the interval between when a new encryption key is sent and when a switchover occurs. This value also applies to the subsequent interval between when the switchover occurs and when the old encryption key is decommissioned. Default is 0x1000.
srtKeyLength Specifies the type of AES encryption. For AES-128 encryption, use 16; for AES-192 encryption, use 24; and for AES-256 encryption, use 32. Default is 16.
srtKeyRefreshRate (WSE 4.8.5 and later) Sets the number of packets to be transmitted with an encryption key before switching to a new key. Default is 0x1000000.
srtLatency (WSE 4.8.5 and later) Specifies the latency in milliseconds. This is the time it takes for a UDP packet to be sent and delivered, including the time required to account for sending and retransmitting lost packets. The srtLatency value should be 2.5 * the round trip time (RTT). When peers set different latency values, the higher of the two values applies to both peers. If not specified, the default value, 400, is used.
srtMaximumBandwidth (WSE 4.8.5 and later) Sets the maximum bandwidth, in bytes per second, that the connection can use. Valid values are -1 (infinite), 0 (calculated from srtInputBandwidth and srtOverheadBandwidth), and integers greater than 0 for an absolute limit in bytes per second. Default is -1.
srtMaximumSegmentSize (WSE 4.8.5 and later) Specifies, in bytes, the maximum size for a unit of transfer data (MTU). Only increase this value beyond the default if using a controlled network that supports jumbo frames. For MPEG-TS streams, use the default, 1500, which is the size of the UDP packet used for SRT.
srtOverheadBandwidth (WSE 4.8.5 and later) If srtMaximumBandwidth is set to 0, specifies the maximum bandwidth along with the srtInputBandwidth value using this formula: max bandwidth = input bandwidth * (100 + overhead bandwidth)/100. Default is 25.
srtPassPhrase Specifies the passphrase used to secure the SRT stream. The passphrase must be between 10 and 79 characters in length.
srtSendBufferSize (WSE 4.8.5 and later) Specifies the send buffer size in bytes. The default value, 12058624, is calculated from the formula
8192 * (srtMaximumSegmentSize - 28),
where srtMaximumSegmentSize is 1500 by default and 28 bytes is the IP and UDP header size.
srtSendBufferSizeUDP (WSE 4.8.5 and later) Specifies the send buffer size for UDP connections in bytes. Default is 65536.
srtStreamId (WSE 4.8.5 and later) Sets a string sent on the socket prior to connecting. Length is a maximum of 512 characters. If using a stream ID, a peer connection must have a minimum SRT version of 1.3.
srtTimeStampBasedDeliveryMode (WSE 4.8.5 and later) Specifies whether the SRT time-stamp-based packet delivery mode is enabled. Default is true.
srtTimesToPrintStats (WSE 4.8.5 and later) Specifies how many times stream statistics are written to the log, once per second, after the stream starts. Set to -1 to log statistics indefinitely. Default is 0.
srtTooLatePacketDrop (WSE 4.8.5 and later) Specifies whether all packets that are received late, including retransmitted packets, are dropped. Default is true.

icecast2 profile parameters

Note: Streaming to Icecast 2 requires WSE 4.5.0 or later.
Name Description
host
(required)
Destination hostname or IP address.
port
(required)
Destination port.
userName
(required)
The username/authentication hash required to connect to the destination server. This information is obtained from the Icecast 2 configuration utility.
password
(required)
The password required to connect to the destination server.
streamName
(required)
The stream mount point/ID assigned when configuring the Icecast 2 server. This is commonly a number and is unique per stream on the destination Icecast server. Include a suffix that indicates the content type (for example, .mp3 or .aac).
icecast2.public Set to true to announce the stream in the Icecast 2 directory (default is false).
icecast2.name The name of the Icecast 2 server, which should be short and reflect a brand or describe the stream's content.
icecast2.genre The type of audio style being sent to the server. For example, Rock or Classical.
icecast2.url The absolute URL (i.e., beginning with http:// or https://) sent to the Icecast 2 server. For example, https://www.wowza.com.
icecast2.aim The AOL Instant Messenger (AIM) number sent to the server when the connection is established.
icecast2.icq The I Seek You (ICQ) number sent to the server when the connection is established.
icecast2.irc The Internet Relay Chat (IRC) number sent to the server when the connection is established.

group-manager profile parameters

Name Description
childProfile
(required)
Defines how streams in the group are sent to a destination and determines which additional configurable parameters are available. Supported profiles include:
  • cupertino-akamai
  • mpegdash-akamai
  • rtmp-akamai
  • cupertino-cloudstorage
  • cmaf-cloudstorage
Note: Additional stream target profiles may work for childProfile.
group.streamMatcher
(required)
Determines the method of identifying streams to group for delivery to the destination and identifies the source streams as [source-stream-name] in the map file entry. Use one of the following group.streamMatcher options:
  • nameList - Use to identify streams with a list of one or more stream names separated with the pipe character (|). For example, with "group.streamMatcher":"nameList", [source-stream-name] could be myStream_160p|myStream_720p.
  • nameRegex - Use to identify streams using a regular expression. For example, with "group.streamMatcher":"nameRegex", [source-stream-name] could be my[sSdDqQ]tream.+.
  • namePrefix (default) - Use to identify streams by a shared prefix in stream names. For example, with "group.streamMatcher":"namePrefix", [source-stream-name] could be myStream, which would group any streams with names that begin with myStream.
  • nameSingle - Use if pushing a single bitrate stream with no transcoding. Identifies only one stream (not adaptive bitrate) that matches your Source Stream Name. For example, with "group.streamMatcher":"nameSingle", [source-stream-name] could be myStream.
  • ngrp - Use to identify streams in a stream name group. For example, with "group.streamMatcher":"ngrp", [source-stream-name] could be myStream_all.
  • smil - Use to identify streams included in a SMIL file in [install-dir]/content. For example, with "group.streamMatcher":"smil", [source-stream-name] could be myStream.smil.
  • amlst - Use to identify streams included in an AMLST file provided by an IMediaListProvider module. For example, with "group.streamMatcher":"amlst", [source-stream-name] could be myStream.amlst.
group.name
(required)
A descriptive name for the stream group for this stream target, which is used to identify the group in playback URLs.
entryName
(required)
A descriptive name for the map entry, for example, Akamai-DASH-myStreamNGRP.
akamai.streamId
(required)
Destination Akamai StreamId.
Note: The group-manager profile also supports the optional parameters for the cupertino-akamai and mpegdash-akamai profiles because these profiles are used for the childProfile parameter. The adaptiveGroup parameter is not necessary when using the group-manager profile. See cupertino-akamai and mpegdash-akamai profile parameters for the additional parameter options.

Akamai playback URL formats with the group-manager profile

HLS: http://[akamai-playback-host].akamaihd.net/hls/live/[akamai.streamId]/[group.name]/playlist.m3u8
MPEG-DASH: http://[akamai-playback-host].akamaihd.net/dash/live/[akamai.streamId]/[group.name]/manifest.mpd

webrtc-whip profile parameters

Note: Only whipEndpoint is required. Any other parameter can be omitted to use its default value. If a parameter is set to an invalid value, WSE reports the problem and uses the default value instead of failing the stream target.
Name Description
whipEndpoint
(required)
The destination URL that the stream is published to, which must be an absolute http or https URL. If the URL is missing or malformed, the stream target is disabled and an error is reported.
whipAuthScheme Determines how the client authenticates with the destination (default is none). Possible values are:
  • none: No authentication information is sent.
  • bearer: An Authorization: Bearer header is sent using the whipBearerToken value.
  • custom: The headers specified by whipAuthHeaders are sent.
An unrecognized value turns off authentication and a warning is reported.
whipBearerToken The token sent when whipAuthScheme is set to bearer (required for that scheme). The token isn't returned when the stream target configuration is read, so leave this value blank when editing a stream target to keep the stored token.
whipAuthHeaders The headers sent when whipAuthScheme is set to custom, specified as a pipe-delimited ("|") list of Name: value pairs. Invalid, malformed, and duplicate entries are skipped when the configuration is applied. The headers aren't returned when the stream target configuration is read.
whipSimulcast Set to true to push a group of renditions as a single simulcast stream (default is false). The stream target's source stream name must be the name of the rendition group. If the group contains fewer than two renditions, the stream is pushed as a plain, non-simulcast stream.
whipConnectTimeoutMs The time in milliseconds allowed to establish the TCP/TLS connection to the endpoint (default is 5000). Must be greater than 0.
whipRequestTimeoutMs The time in milliseconds allowed for the endpoint to respond to a request (default is 12000). Must be greater than 0.
whipRetriesEnabled Set to false to attempt every request exactly once. When set to true, WSE retries requests that fail with a retryable error (default is true).
whipMaxRetries The number of retry attempts per request, in addition to the first attempt (default is 2). Valid values are 0 through 10; higher values are clamped to 10.
whipRetryBaseDelayMs The delay in milliseconds before the first retry, which doubles with each additional attempt (default is 500). Must be greater than 0, because a zero delay would overload a failing endpoint.
whipRetryMaxDelayMs The maximum retry delay in milliseconds (default is 5000). A Retry-After header sent with a 503 response is honored as a minimum wait time, up to a maximum of 30 seconds.
whipAllowCrossOriginRedirect Set to true to allow a redirect to a different origin (default is false).
whipStatePollIntervalMs How often, in milliseconds, the stream target rechecks whether the source stream is ready while it waits to connect (default is 500). Session state changes are event-driven and aren't polled.
whipLocalAddress The local interface address used for the outbound session and its ICE candidates, in the form of an IP address (default is the host's default interface). If the value resolves to a loopback address, a warning is reported because the push won't connect.
whipSignalingPort The local secure port whose certificate is used for DTLS (default is the first secure port). Any secure host port's certificate can be used for an outbound push, and this value is ignored entirely when a standalone WebRTC certificate is allowed. Valid values are 1 through 65535.

Debug connections


To debug stream-level issues such as connection problems with a destination, you can configure debugging on a per-destination, per-map-file-entry basis with the debugLog and debugPackets map file parameters. When enabled, debugLog logs high-level connection information as well as connection health. For RTMP-specific debugging at the packet level, debugPackets logs verbose per-packet information.

The following example map file entries show how these parameters are used:

myStream={"profile":"rtmp", "streamName":"myStream", "host":"wowza.myserver.com", "userName":"myUser", "password":"myPassword", "debugLog":"true", "debugPackets":"true"}
myStream={"profile":"cupertino-akamai", "streamName":"myStream", "cupertino.renditions":"audiovideo", "akamai.streamId":"215930", "akamai.hostId":"wowzadevapple-i", "debugLog":"true"}

For advanced debugging needs, see Debug Stream Targets (push publishing).

Push publishing Java API


WSE push publishing includes a low-level API for building custom publishing applications. The documentation can be found in the [install-dir]/documentation/serverapi directory or on our public Java API docs. (See the com.wowza.wms.pushpublish.* packages.)

This example module uses the push publishing APIs to push an RTMP stream to a remote server. It listens for new streams to be published and pushes them back to the app with the name push-[streamName]. When the stream is stopped (unpublished), it disconnects the push publishing stream.

See the README.html file included in the compressed folder for installation instructions.

More resources