Table of Contents:
3. Akamai configuration
4. Wowza configuration
5. Validating the setup
Pexip Infinity supports the RTMP protocol, which allows for ingesting media from Pexip Infinity to RTMP-capable streaming and recording platforms, including CDNs such as Akamai. This guide will show how to leverage this RTMP capability to pass an RTMP stream from a Pexip conference to Akamai's Media Services Live CDN via a Wowza Streaming Engine instance.
This guide is divided into several sections - one section covering the setup and configuration in Akamai, one section covering the setup and configuration of the Wowza application, and one section that describes how to test and validate the entire setup.
2. Pre-requisites and tips:
- This guide assumes that you have an active account with Akamai Media Services Live.
- It is also assumed that you have access to an instance of Wowza Streaming Engine - if you do not, it is relatively straightforward to stand up such an instance in Azure via a Windows or Linux appliance, see the following resources for further information:
It should also be possible to stand up Wowza in other cloud environments (AWS, GCP and so forth), although this falls outside of the scope of this guide.
- This guide will instruct how to configure Wowza with Open Authentication for incoming RTMP streams - this means that the RTMP ingest on TCP port 1935 should be protected with firewall rules, to ensure that only Pexip conferencing nodes are allowed to send RTMP traffic to Wowza.
3. Configuring Akamai Media Services Live
a) In Luna, go to Configure > Media Services Live and click Add Configuration. On the following page, select Stream Packaging (RTMP Ingest / HDS & HLS output):
Click Continue and move to the next page:
b) On the Stream Packaging Configurations page, choose the appropriate CP code (redacted here) and make a note of this code, as it will be used later in the guide. Click Configure now to continue.
On the next configuration page, choose appropriate values for Configuration Name and Hostname, (in this example we use pexrtmp) choose a target audience location based on your preference and click Next to proceed:
c) Review your settings on the following page, and make a note of the Reporting CP code (Redacted here), and then choose Activate on Staging or Activate on Production based on your preference:
d) Now that the Stream Packaging configuration has been created, we can move on to creating a stream using this SP configuration. Go to Configure > Media Services Live, click the cog on the right-hand side next to the Stream Packaging configuration and choose Add Stream:
e) On the Create New Packages Stream Page, choose an appropriate Stream Name, fill in the IP address of your encoder (Wowza instance) and click Populate same as Primary and click Test for both IP addresses. If your Wowza instance doesn't reply to ping, you can optionally choose Nameserver will be used instead.
Also set a Password for the stream - in this example we are setting the password as pexip123 for simplicity. Once all relevant fields have been populated, click Next to proceed:
f) On the next page, review your settings and click Next:
g) Click Submit Request on the next page to finalise the stream configuration:
The stream provisioning will now start - note that it may take around 2 hours for the stream configuration to go into effect.
With the Akamai configuration completed, we have the following configuration parameters which will be used when configuring the Wowza side of things:
Stream name: pexipstream
CP code: 123456 (This is a placeholder for this example - the CP code can be found in Configure > Media Services Live in the Luna Control Center)
Username: 123456 (Same as CP code)
Akamai Stream ID: 667636 (Highlighted in green in the screenshot above)
4. Configuring Wowza Streaming Engine
This guide assumes that you already have a working Wowza Streaming Engine instance stood up somewhere, and admin access to that instance. The following guides and resources can be helpful in quickly standing up Wowza on Azure if needed:
The following guide can also be a nice helper document together with our guide:
Keeping in mind the config parameters we noted down from the Akamai configuration, follow the steps below to set up Wowza to act as the RTMP relay between Pexip and Akamai:
a) Under the Applications menu in Wowza, click on Add application and choose Live / Single server or origin as the application type. For application name, use pexip or any application name as you see fit.
With your pexip application chosen, go to Stream Targets and click Add Stream Target and choose Akamai:
b) On the next page, we populate the following fields:
Destination Protocol: Adobe RTMP
Stream Target Name: pexip-akamai (This field can be freely set, and does not depend on any of our previous configuration)
Source stream name: pextest (Make a note of this source stream name, as we will use this when we later add an RTMP participant to a conference on Pexip)
Destination Port: Leave at its default of 1935
Destination Stream Name: pexipstream_01_2000 (This directly refers to the stream name we previously configured in Akamai (pexipstream), followed by _01 (which denotes the camera angle) and _2000 (which denotes the bitrate) - this syntax is specific to Akamai and you generally have to use this syntax with Akamai (streamname_angle_bitrate)
User Name: 123456 (This directly refers to the username which is configured on Akamai, which is identical to the CP code)
Password: pexip123 (This directly refers to the password set on the Akamai side)
Akamai Stream ID: 667636 (This directly refers to the stream ID set on the Akamai side, highlighted in green in a previous screenshot)
Send To Backup Server: Lave this unticked (unless desired)
c) Once the fields have been populated, you should see something as follows:
d) Click Add this target to finalise the Stream Target configuration.
e) The next step is to enable Stream Targets. This can be done by clicking Enable Stream Targets on the Stream Targets page:
f) Once Stream Targets has been enabled, the Wowza application needs to be restarted - do so by clicking Restart Now:
g) As the next step, go to Source Security, click Edit and set Open (no authentication required) for RTMP Sources (since Pexip currently does not support RTMP authentication), and click Save:
Our Wowza instance is now configured and ready to accept incoming RTMP connections from Pexip, and relay these to Akamai.
5. Validating the setup by adding an RTMP participant to a Pexip VMR
In this example, our Wowza instance has an IP address of 220.127.116.11. On Wowza, we configured an application called pexip, and in the stream target configuration, we configured a source stream name of pextest.
For outbound RTMP connections from Pexip, the general address syntax is rtmp://IP-OR-FQDN/application/streamname.
Taking this into the context of our Wowza configuration, this means that if we connect from Pexip out to rtmp://18.104.22.168/pexip/pextest, we should establish successfully out to Wowza, which in turn will forward that RTMP stream to Akamai. The IP address and possibly application name and stream name will of course be different in your environment :)
a) In this example, we will be dialling out with RTMP to our Wowza instance using the Webapp from a VMR - once the RTMP participant has connected, you should see a Streaming Enabled indicator in your conference. Perform the dialout by clicking the top-left menu in the Webapp and clicking Add a participant, making sure to choose RTMP as the dialout protocol, and the relevant RTMP address, which in our example will be rtmp://22.214.171.124/pexip/pextest but different in your environment:
b) To verify that Wowza is receiving a good, incoming stream, go to Incoming Streams in your Wowza application:
c) To verify that this stream is being forwarded to Akamai via the Stream Target, go to Stream Targets within your Wowza application and ensure that the status is showing as Active:
d) On the Akamai side (In the Luna Control Panel), you can verify that Akamai side is receiving a good RTMP ingest by going to Monitor > Media Services Live and Monitor > Live Media > Monitor Streams. Note that it can take a few minutes for the stream data to appear here:
After the above points have been verified, we can conclude this guide!