Use RTMP to distribute live streams from Wowza Streaming Engine

The Stream Targets feature in Wowza Streaming Engine™ media server software allows you to send live streams to widely distributed destinations. For example, you can send a live stream from a server running Wowza Streaming Engine to any RTMP destination. This allows you to use the RTMP destination to deliver the stream to viewers.

This article explains how to set up Wowza Streaming Engine to send a single live stream to any generic RTMP destination for distributed delivery.

If you're ingesting a source stream in multiple bitrates or transcoding in Wowza Streaming Engine and want to send an adaptive bitrate set of streams to your destination, you must create a stream target for each rendition and configure a corresponding stream in your destination. The process is similar to what's described here, but see the documentation provided by the destination CDN or service for help configuring it to ingest multiple bitrate streams.

Note: Wowza Streaming Engine 4.2 or later is required. In earlier versions of Wowza Streaming Engine, you must use the Push Publishing module to send live streams to RTMP destinations.

Configure the RTMP destination to receive and distribute the stream

Your RTMP destination might be almost anything—a third-party CDN or a video-sharing site. Sign in to the destination's dashboard or video management tool and create an application or stream to deliver the live event to viewers. You may need to provide the site with information about your Wowza Streaming Engine setup, such as the IP address of the server running Wowza Streaming Engine. You can find the IP address in the Connection Settings panel of the Home page of Wowza Streaming Engine Manager.

After configuring the live stream or application, make note of the stream name and host domain or IP address. You need this information when you create the live application in Wowza Streaming Engine that sends the stream to the RTMP destination.

Create a stream target to send the stream to the RTMP destination

After creating a Live application in Wowza Streaming Engine, it must be configured to send the stream to the RTMP destination.
  1. In the contents panel, click Stream Targets, then click Add Stream Target.
  2. On the Add Stream Target page under Generic Target Destinations, click RTMP to send the stream to an RTMP target.
  3. On the Generic RTMP Configuration page, provide the following information:
    • Stream Target Name - A descriptive name for this target setup in Wowza Streaming Engine. The name must be unique and can't contain less-than (<), greater-than (>), colon ( : ), quotation (' and "), forward slash (/), backslash (), pipe (|), question mark (?), asterisk (*), double-dot (..), or tilde (~) characters.
    • Source Stream Name - The name of the incoming stream you specified in Wowza Streaming Engine when you set up the video source.
    • Destination Application Name - The name of the application in the RTMP destination, if there is one.
    • Destination Application Instance - The name of the application instance at the RTMP destination, if there is one.
    • Destination Host - The hostname or IP address of the destination RTMP server. If your URL includes the rtmp:// prefix, you must remove it. 
    • Destination Port - The port number for your connection. RTMP connections use port 1935 by default.
    • Destination Stream Name - The name of your stream at the RTMP destination.
    • User Name and Password - Your username and password for authentication at the RTMP destination.
      Note: By default, Wowza Streaming Engine requires RTMP and RTSP sources to provide a username and password to connect to a live application. For information on how to turn off authentication, see Managing live source authentication settings.
  4. Click Add this target
Note: If you send a stream with multiple bitrates to your RTMP target, you must create a stream target for each rendition. Repeat the steps above in Create a stream target to send the stream to the RTMP destination for each rendition you want to send to the RTMP destination for adaptive bitrate streaming. The easiest way to do this is to create the first stream target, then click the Copy icon for the target and change the Stream Target Name, Source Stream Name, and Destination Stream Name in the new target. For clarity, we recommend including the bitrate in the Stream Target Name.

Then, for each stream target you create, you must also set the stream target's Adaptive Streaming property to true. To do this:
  1. On the Stream Targets page, click the Edit icon for the stream target.
  2. On the Advanced tab, click Edit. Access to the Advanced tab is limited to administrators with advanced permissions. For more information, see Manage credentials.
  3. Set Adaptive Streaming to true, and then click Save.

Send a secure RTMP (RTMPS)  stream to the destination

It's possible to enable the RTMP stream target to send RTMPS content to the destination. To accomplish this task, you can modify the PushPublishMap.txt file or change the stream target's Secure Sockets Layer (SSL) Encryption configuration property on the Advanced tab in Wowza Streaming Engine Manager.

If using the PushPublishMap.txt file, open the [install-dir]/conf/[application-name]/PushPublishMap.txt file in a text editor. Find the entry for the RTMP stream target in the map file, and add "sendSSL":"true". For more information, see About map entries.

If using Wowza Streaming Engine Manager, follow these steps instead.

  1. In Wowza Streaming Engine Manager, select your application from the contents panel.
  2. Click the Stream Targets link in the contents panel.
  3. Click to edit the RTMP stream target.
  4. Go to the Advanced tab, then click Edit.
  5. Set the Secure Sockets Layer (SSL) Encryption property to True.
  6. Click to Save.

Enable Stream Targets

Before you stream, you must enable the Stream Targets feature for the Wowza Streaming Engine application or the individual stream target you created.

  1. In the contents panel of your application, if you don't see a checkmark next to Stream Targets, click Stream Targets in the contents panel and then click Enable Stream Targets.

    When Stream Targets is enabled, a checkmark appears next to Stream Targets in the contents panel and the Stream Targets page shows Status is Enabled.

  2. If the Status of an individual stream target is Disabled, click the Enable icon for the stream in the Actions column.


  3. When prompted, click Restart Now so your change takes effect.

When a stream target is enabled, its status on the Stream Targets page is one of the following:

  • Waiting. The target is enabled but is not yet pushing the stream to the target destination because either the target's configured source stream is not connected to the Wowza Streaming Engine input or Wowza Streaming Engine has not completed initializing the connection to the target destination.
  • Active. The Wowza Streaming Engine instance successfully connected to the target destination and is actively pushing the stream.
  • Error. The Wowza Streaming Engine instance unsuccessfully tried to connect to the target destination. Make sure the target's configured source stream is connected to the Wowza Streaming Engine input. Errors might be due to an invalid target configuration or issue with the destination server.

The status of each stream target updates automatically if your Wowza Streaming Engine application has fewer than 100 stream targets. If your application has more than 100 stream targets, you can click Refresh to update the status.

Test the connection

Configure your encoder and then test the live stream.
  1. Start the stream in the H.264 camera or encoder that's sending the stream to your application in Wowza Streaming Engine.

    The application ingests the live stream and sends it to the RTMP target.
  2. In Wowza Streaming Engine, verify that the stream is working by clicking Incoming Streams, and then clicking the stream name.

    The stream detail page displays the Status of the stream (Active) as well as details about connections, uptime, and throughput for the live stream.
  3. Verify that your RTMP target is receiving, publishing, and distributing the stream as you've configured it to do.
  4. Stop the stream in the source camera or encoder to end your test connection.

More resources