Use CDNs and services to distribute live streams from Wowza Streaming Engine

In this article, you can learn how to use stream targets in Wowza Streaming Engine™ media server software to send live streams to distributed destinations such as content delivery networks (CDNs) and services over various protocols.

About Stream Targets


Stream targets provide a way to send a live stream to a destination, such as a content delivery network (CDN) or service over various protocols. The destinations distribute your live stream, enabling you to scale your Wowza Streaming Engine implementation, computing resources, and delivery options for various scenarios. For example, you can use stream targets to send a live stream to:

  • Wowza Video, which can transcode and deliver the stream to viewers anywhere around the world.
  • A third-party CDN, which can deliver the broadcast to viewers using a global edge network.
  • Video-sharing websites such as YouTube Live or Facebook Live, which can host playback of the event on their portal.
  • A live application on another Wowza Streaming Engine instance, which can transcode and deliver the stream to viewers.

You can set up stream targets in the Wowza Streaming Engine Manager, or if you prefer, you can manually edit and manage an XML map file to send live source streams to these destinations.

Note: Content delivery networks, including Wowza CDN, don't support adaptive bitrate streaming based on SMIL files. To send a set of adaptive bitrate renditions to a CDN endpoint, you must use the Transcoder to produce renditions with the same stream name prefix. For more information, see Set up and run Transcoder in Wowza Streaming Engine.

Send streams to destinations using Wowza Streaming Engine 4.2 and later 


The easiest way to send live streams to distributed destinations is to use Wowza Streaming Engine Manager. You don't have to install any modules or manually edit an XML map file, and the stream targets are displayed alphabetically (by destination type, protocol, adaptive group name (HTTP protocols only), and then stream target name) with an automatically updated status for each. For instructions on how to use stream targets for your desired workflow, see any of the following articles:

Note: If you manually created stream targets by editing the push publishing map file in an earlier version of Wowza Streaming Engine, those map entries will appear in your live application's Stream Targets page in Wowza Streaming Engine Manager when you upgrade to Wowza Streaming Engine 4.2 and later. Targets that were defined as RTMP will appear as generic RTMP targets, even if they point to a BitGravity or YouTube destination. 

Send streams to destinations using Wowza Streaming Engine 4.1 and earlier 


If you're using Wowza Streaming Engine 4.1 or earlier, you must install the ModulePushPublish module, which listens for incoming live streams (source streams) published to the server.

  1. In Wowza Streaming Engine Manager, click the desired live application in the contents panel.
     
  2. On the live application page, click the Modules tab.
     
    Note: Access to the Modules tab is limited to administrators with advanced permissions. For more information, see Manage credentials.
  3. On the Modules tab, click Edit and then click Add Module,
  4. Specify the following in the Add New Module dialog box:
  • Name – ModulePushPublish
  • Description – ModulePushPublish
  • Fully Qualified Class Name – com.wowza.wms.pushpublish.module.ModulePushPublish
  1. Click Add, then Save, and then click Restart Now when prompted to apply the changes. 

Editing the push publishing map file


The PushPublishMap.txt map file stores the configuration that maps live source streams to destinations. In Wowza Streaming Engine 4.2 and later, you can manage the map file configuration using the stream targets feature in Wowza Streaming Engine Manager. In earlier versions of Wowza Streaming Engine, you edit the map file in a text editor to manage the configuration.

Managing the map file

By default, Wowza Streaming Engine 4.2 (and later) uses a unique map file for each application. The default pushPublishMapPath property value is ${com.wowza.wms.context.VHostConfigHome}/conf/${com.wowza.wms.context.Application}/PushPublishMap.txt. This means the default map file location is [install-dir]/conf/[application]/PushPublishMap.txt. The map file is automatically created for you in this location when you enable the stream targets feature.

Earlier versions of Wowza Streaming Engine use a single map file for all applications by default. To configure a unique map file for an individual application, copy the [install-dir]/conf/PushPublishMap.txt file to the [install-dir]/conf/[application] folder and then define the pushPublishMapPath property in the application's configuration file (Application.xml) using the ${com.wowza.wms.context.Application} variable to point to the appropriate path. If pushPublishMapPath isn't explicitly defined for an application in Application.xml, the default path value, [install-dir]/conf/PushPublishMap.txt, is used.

To change the default map file location for your applications, update the pushPublishMapPath property value to the desired location, and then make sure that you copy the [install-dir]/conf/PushPublishMap.txt map file to this location so that the Wowza Streaming Engine can find the file. You can do this in Wowza Streaming Engine Manager for Wowza Streaming Engine 4.2 and later or by editing the application's configuration file in a text editor.

pushPublishMapPath property details 

Path
Name
Type
Notes
Root/Application pushPublishMapPath String

Defines the path to the publishing map file.

Can be made application-specific using Wowza Application variable notation.

This property applies to all push publishing profiles.

Example values: ${com.wowza.wms.context.VHostConfigHome}/conf/${com.wowza.wms.context.Application}/PushPublishMap.txt

${com.wowza.wms.context.VHostConfigHome}/conf/PushPublishMap.txt

Update the map file path property in Wowza Streaming Engine Manager 4.2 and later

  1. In Wowza Streaming Engine Manager, click the Applications tab, and then click the name of your live application in the contents panel.
     
  2. On the live application's Properties tab, in the Quick Links list, click Custom.
     
    Note: Access to the Properties tab is limited to administrators with advanced permissions. For more information, see Manage credentials.
  3. In the Custom area, click Edit, and then update the pushPublishMapPath property value.
     
  4. Click Save, and then restart the application to apply the changes.

Update the map file path property in Application.xml

Use a text editor to open the [install-dir]/conf/[application]/Application.xml file for your live application and update the pushPublishMapPath property to the desired value. Then, restart Wowza Streaming Engine to apply the changes.

Note: If you upgrade from an earlier version of Wowza Streaming Engine to Wowza Streaming Engine 4.2 or later, the stream targets feature looks for the map file specified by the pushPublishMapPath property for your older configuration.

About map entries

Each line in the map file represents a single destination for a given source stream or group of streams. You can send source streams to multiple destinations by adding multiple entries for a stream or stream group. Map entries can be added or modified while Wowza Streaming Engine is running. Modifications don't affect streams that are currently running. Only streams received by Wowza Streaming Engine after the map file is updated are affected.

A map entry has the following format:

[source-stream-name]={"profile":"[profile]", [additional-configuration-items]}

For example, to use the RTMP protocol to send a stream named myStream to another media server that's running Wowza Streaming Engine, the PushPublishMap.txt file entry looks like this:

myStream={"profile":"rtmp", "streamName":"myStream", "host":"wowza.myserver.com", "userName":"myUser", "password":"myPassword"}

To send a stream to more than one destination, add multiple map entries for the stream. For example, to send a stream named myStream to a remote server that's running Wowza Streaming Engine and also to deliver it as multicast using MPEG-TS, add the following entries to the map file:

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"}

Note: The PushPublishMap.txt file supports quotation (") marks around the keys and value strings in compliance with the JSON specification.

Each map entry refers to a profile that defines how the stream is published and determines which additional configurable parameters are available. For details, see About map profiles below.

For sample map file entries for many destinations, see Sample map file entries for Stream Target destinations (push publishing).

About map profiles

Each map entry in the PushPublishMap.txt map file refers to a profile that defines how the stream is sent to its destination and determines which additional configurable parameters are available. This section lists the available profiles and each profile's parameters:

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 user name (needed if the destination requires authentication).
password Destination server password (needed if the destination requires authentication).
secureTokenSharedSecret SecureToken value to use to connect to 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 source streams absolute timecodes (needed for adaptive bitrate streaming; default is false). Overrides the setting change done 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 setting change done 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} - Wowza Streaming Engine push publishing version
queryString Query string data added to 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 Wowza Streaming Engine 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 Wowza Streaming Engine Manager.
removeMetadataObjects
(available in Wowza Streaming Engine 4.2 and later)
Set to true to enable removal of all array and object data types sent to the destination in RTMP onMetaData messages.
filteredMetadataItems
(available in Wowza Streaming Engine 4.2 and later)
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 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-akamai and mpegdash-akamai profile parameters

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 will then push 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 Wowza Streaming Engine logs.
 
Note: For information 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 Wowza Streaming Engine logs.
akamai.eventName
(optional)
Destination event name.
adaptiveGroup
(optional)
The name of the adaptive group to which this stream target belongs.
 

Note: Prior to Wowza Streaming Engine 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. Wowza Streaming Engine 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 video bitstream. For example, "audio_752kbps".
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 (Wowza Streaming Engine 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 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 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 as well.
     
  • Akamai documentation indicates that their ingest servers only support 6-second chunk durations for MPEG-DASH. The Wowza Streaming Engine default chunk duration is 10 seconds for MPEG-DASH. Therefore, we recommend changing the mpegdashSegmentDurationTarget (formerly mpegdashChunkDurationTarget) in Wowza Streaming Engine 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 is 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 a stream target to Wowza Video using HLS. If using the CMAF HLS protocol to send the stream target 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: useu, asia, sa, or india.
group.streamMatcher
(optional)
If not set, defaults to namePrefix. When pushing a single bitrate stream with no transcoding, then 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 120000ms (2 minutes).
http.relativePlaylists
(optional)
Not required, but recommend setting this optional 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)
During the call to create the live stream in Wowza Video, corresponds to the broadcast_location in the Wowza Video REST API. See the reference documentation for a full definition.
WowzaVideoTranscoder.height
(required)
During the call to create the live stream in Wowza Video, corresponds to the aspect_ratio_height in the Wowza Video REST API. See the reference documentation for a full definition.
WowzaVideoTranscoder.width
(required)
During the call to create the live stream in Wowza Video, corresponds to the aspect_ratio_width in the Wowza Video REST API. 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 Wowza Streaming Engine 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 Wowza Streaming Engine, transcoder usage billing applies. To avoid unnecessary billing, stream target entries are automatically disabled by Wowza Streaming Engine 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 Wowza Streaming Engine, 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 Wowza Streaming Engine 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 Wowza Streaming Engine 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 Wowza Streaming Engine 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 Wowza Streaming Engine 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 Messanger (AIM) number sent to the server when the connection is established.
shoutcast.icq The I See 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 Wowza Streaming Engine 4.5.0 or later.
Name Description
host (required) Destination hostname or IP address.
port (required) Destination port.
userName (required) The user name/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 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 Messanger (AIM) number sent to the server when the connection is established.
shoutcast.icq The I See 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

Note: 
  • Streaming to an SRT destination requires Wowza Streaming Engine 4.7.3 or later.
  • See the The SRT Deployment Guide from the SRT alliance for additional information about SRT properties.
Name Description
sourceStreamName (required) Specifies the name of the incoming stream that you specified in Wowza Streaming Engine when you set up the video source. 
host (required) Sets the destination hostname or IP address.
port (required) Sets the destination port.
srtConnectTimeout (Wowza Streaming Engine 4.8.5 and later) Specifies the length of time that Wowza Streaming Engine waits for a target to respond to a connection request, in milliseconds. Default is 3000.
srtFlightFlagSize (Wowza Streaming Engine 4.8.5 and later) Specifies the maximum number of bytes that can be sent without being acknowledged. Default is 25600.
srtInputBandwidth (Wowza Streaming Engine 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 (Wowza Streaming Engine 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, use 32. Default is 16.
srtKeyRefreshRate (Wowza Streaming Engine 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 (Wowza Streaming Engine 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 (Wowza Streaming Engine 4.8.5 and later) Sets the maximum bandwidth, in bytes per second, that the connection can use. Valid values are -1 (infinite), (calculated from srtInputBandwidth and srtOverheadBandwidth), and integers greater than 0 for an absolute limit in bytes per second. Default is -1
srtMaximumSegmentSize (Wowza Streaming Engine 4.8.5 and later) Specifies, in bytes, the maximum size for a unit of transfer data (MTU). Only increase this value greater than 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 (Wowza Streaming Engine 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 (Wowza Streaming Engine 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 (Wowza Streaming Engine 4.8.5 and later) Specifies the send buffer size for UDP connections in bytes. Default is 65536.
srtStreamId (Wowza Streaming Engine 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 (Wowza Streaming Engine 4.8.5 and later) Specifies whether the SRT time-stamp-based packet delivery mode is enabled. Default is true.
srtTimesToPrintStats (Wowza Streaming Engine 4.8.5 and later) Specifies how often stream statistics are written into the log after the stream starts. Statistics are logged each second. Set to -1 to log statistics indefinitely. Default is 0.
srtTooLatePacketDrop (Wowza Streaming Engine 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 Wowza Streaming Engine 4.5.0 or later.
Name Description
host (required) Destination hostname or IP address.
port (required) Destination port.
userName (required) The user name/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. It should be noted that a suffix outlining the content type (i.e. .mp3 or .aac) should be used.
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. 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 Messanger (AIM) number sent to the server when the connection is established.
icecast2.icq The I See 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. Primary support for profiles: 
  • 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

Debugging 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).

About the push publishing API


Push publishing in Wowza Streaming Engine includes a low-level API for building custom publishing applications. The documentation for the API is included in the documentation/serverapi folder in the Wowza Streaming Engine installation (see com.wowza.wms.pushpublish.* packages in the documentation).

You can download an example module demonstrating how to use the push publishing APIs to push an RTMP stream to a remote server. This module listens for new streams to be published and will push them back to the application with the name push-[streamName]. When the stream is stopped (unpublished), it disconnects the push publishing stream.

To install the module, see the README.html file in the compressed (zipped) folder for instructions.

More resources