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:
- Wowza Video
- A third-party CDN, such as Akamai
- A video-sharing website, such as YouTube Live
- A cloud storage provider, such as Amazon S3
- A live app on another WSE instance
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.
- Stream to another WSE instance
- Stream from WSE for transcoding in Wowza Video
- Stream from WSE for transcoding in Wowza Video using Wowza APIs
- Stream to Akamai HD
- Stream to Facebook Live
- Stream to SHOUTcast and Icecast
- Stream to YouTube
- Distribute a live stream using MPEG-TS
- Distribute a live stream using RTMP
- Distribute a live stream using RTP
- Distribute a live stream using SRT
- Distribute a live stream using CMAF
- Distribute a live stream using WebRTC
- Send HLS content to Amazon S3
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
- Open WSE Manager.
- Click the Applications tab.
- In the contents panel, click the name of your live app.
- Click the Properties tab.
- In the Quick Links list, click Custom.
- Click Edit.
- Change the value of
pushPublishMapPathto the updated location. - Click Save.
- 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: Send an RTMP stream to WSE or Adobe Media Server.rtmp-akamai: Send an RTMP stream to Akamai HD.rtmp-limelight: Send an RTMP stream to Edgio.cupertino-cloudstorage: Send an HLS stream to AWS S3.cupertino-akamai: Send an HLS stream to Akamai HD.mpegdash-akamai: Send an MPEG-DASH stream to Akamai HD.rtp: Publish a native RTP stream.mpegts: Publish an MPEG-TS stream.wowza-cdn: Send a live stream to Wowza Video. Use this to push a single stream without transcoding or an ABR stream transcoded by WSE.wowza-video-transcoder: Send a live stream to be transcoded in Wowza Video. Use this to push a single stream for ABR transcoding in Wowza Video.shoutcast1: Publish a SHOUTcast 1 stream.shoutcast2: Publish a SHOUTcast 2 stream.srt: Send a live stream to an SRT destination.icecast2: Publish an Icecast 2 stream.group-manager: Publish adaptive bitrate renditions of HLS or MPEG-DASH streams as a group to Akamai HD, or publish CMAF HLS streams to Wowza Video, Oracle, and AWS.webrtc-whip: Send a WebRTC WHIP stream.
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.
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 thecupertinoormpegdashprefixes.
| 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:
|
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:
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.
|
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:
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.mpdPrimary stream with akamai.eventName not specified:
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.mpdBackup stream with akamai.eventName specified:
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.mpdRedundant stream with akamai.eventName not specified:
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.mpdPrimary stream in an adaptive group with adaptiveGroup specified:
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.mpdBackup stream in an adaptive group with adaptiveGroup specified:
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.mpdNotes:
- When both
akamai.destinationServer:"redundant"andadaptiveGroup:"[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(formerlympegdashChunkDurationTarget) in WSE Manager to6000(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.playbackUrlwowzaVideo.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 tohls_playback_urlin 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 tohosted_page.urlin 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 toembed_codein 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:
- Streaming to an SRT destination requires WSE 4.7.3 or later.
- See the SRT Deployment Guide from the SRT Alliance for additional information about SRT properties. Download the SRT Deployment Guide.
| 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:
Note: Additional stream target profiles may work for
|
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:
|
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: Thegroup-managerprofile also supports the optional parameters for thecupertino-akamaiandmpegdash-akamaiprofiles because these profiles are used for thechildProfileparameter. TheadaptiveGroupparameter is not necessary when using thegroup-managerprofile. See cupertino-akamai and mpegdash-akamai profile parameters for the additional parameter options.
Akamai playback URL formats with the group-manager profile
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.mpdwebrtc-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:
|
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.




