• How to stream to the Akamai HD network

    The Stream Targets feature in Wowza Streaming Engine™ live streaming software allows you to send live streams to widely distributed destinations. For example, you can send a live stream from Wowza Streaming Engine to a CDN of your choice, such as Akamai. This allows you to use the CDN's edge network to deliver the stream to viewers.

    This article explains how to set up Wowza Streaming Engine and Akamai so that you can send a single live stream to the Akamai HD network 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 Akamai, you must create a Stream Target for each rendition and configure a corresponding stream in Akamai. The process will be similar to what's documented here, but see Akamai's documentation if you need help with configuring its service to ingest multiple bitrate streams.

    Notes:
    • Wowza Streaming Engine 4.2 or later is required to use the Stream Targets feature to send Apple HLS and RTMP streams to the Akamai HD network. In earlier versions of Wowza media server software, you must use the Push Publishing module to send live streams to CDNs for distributed delivery.

    • Wowza Streaming Engine 4.3.0.01 or later is required to send Adobe HDS streams to the Akamai HD network.

    Contents


    Configure Akamai to receive and distribute the stream
    Create an application in Wowza Streaming Engine to ingest the live source video
    Create a stream target to send the stream to Akamai
    Enable Stream Targets
    Test the connection
    More resources

    Configure Akamai to receive and distribute the stream


    Before you start, make sure you have an Akamai Media Services Live account that's provisioned and configured to support the type of live streaming you want to use with Wowza Streaming Engine: HLS Ingest, HDS Ingest, or Stream Packaging (for RTMP ingest). To get an Akamai account or for help with live stream provisioning, contact Akamai sales or support.

    When your Akamai account is ready, create a stream that will receive the source stream from Wowza Streaming Engine and deliver it for final viewing.

    1. Log in to Akamai Luna Control Center, click the Configure menu, and then click Media Services Live.

    2. On the Media Services Live page, click the Add Configuration button in the upper-right corner.

    3. On the Select Product page, select the product that works with your stream target configuration. The product you select depends on whether you plan to send an Apple HLS, Adobe HDS, or RTMP stream from the Wowza Streaming Engine application (see Create an application in Wowza Streaming Engine to ingest the live source video).

      • If you'll send an RTMP stream to Akamai, select Stream Packaging (RTMP Ingest/ HDS & HLS output). This service receives an RTMP stream and delivers it to end points for Adobe HDS and Apple HLS playback.

      • If you'll send an Apple HLS or Adobe HDS stream to Akamai, select HLS/HDS/DASH Ingest. This service receives an Apple HLS or Adobe HDS stream and delivers it to end points for Apple HLS or Adobe HDS playback with the appropriate player.

      Notes:
      • Wowza Streaming Engine doesn't work with the Smooth Ingest Enablement (Microsoft Silverlight) product.

      • Wowza Streaming Engine doesn't support sending DASH streams to Akamai. If you select the HLS/HDS/DASH Ingest product, you can send HLS or HDS streams only. Additionally, you must work with Akamai to enable CP codes that support the HTTP protocols (HLS and/or HDS) you want to use.
    4. Refer to the following Akamai PDF documentation to create your Akamai configuration:


      After you complete your configuration and verify it, return to the Media Services Live page in Luna Control Center to see your newly-created configuration version.

    5. On the Media Services Live page, click the gear icon for your new configuration, and then click Add Stream.

    6. Refer to the following Akamai PDF documentation to create your Akamai stream:

      • For the Stream Packaging (RTMP Ingest/ HDS & HLS output) product, see "Creating Streams" in the Stream Packaging (RTMP Ingest/ HDS & HLS Outputs) User Guide. Be sure to do the following:

        1. Under Encoder Details, click Manual Configuration, and then enter the IP address of your Wowza Streaming Engine server in Primary Encoder IP. You can find your Wowza Streaming Engine Server IP address on the Home page in Wowza Streaming Engine Manager, in the Connection Settings panel.

        2. If you've set up another Wowza media server for failover, enter its IP address in Backup Encoder IP. If you don't have a backup Wowza media server, click Populate same as Primary.

        3. Click Test so that Akamai can ping each address and test the connection.

        4. Enter a Password. If you leave the Password field blank, Akamai automatically generates a password for you. (Akamai uses your CP code as the username.)

      • For the HLS/HDS/DASH Ingest product, see "Creating a New Configuration" in the HLS, HDS, and DASH Ingest User Guide. Choose whether you want to archive to NetStorage, provide the number of bulk streams to create, and confirm the contact details.

      Note: In your stream configuration, use a Stream Name that identifies and describes your stream. For simplicity, use the same stream name that your encoder or camera will use to publish a stream to Wowza Streaming Engine.
    7. After you create your stream and verify its details, click Submit Request.

    8. After Akamai provisions the stream, view its details by clicking on the stream name on the Media Services Live page in Luna Control Center. You'll need this information when you create the live application in Wowza Streaming Engine that sends the stream to the Akamai destination.

    Create an application in Wowza Streaming Engine to ingest the live source video


    Create a live application in Wowza Streaming Engine that will receive the live stream from an H.264 encoder or camera and send it to Akamai for distributed delivery.

    1. Sign in to Wowza Streaming Engine Manager, click the Applications tab at the top of the page, and then click live in the contents panel.

      Note: This article uses the live application that installs with Wowza Streaming Engine. If you want to use a different live application, select it instead from the contents panel.
    2. In the contents panel, click Sources (Live).

    3. Select the camera or encoder that you want to use as your video source, and complete the process of connecting the source to Wowza Streaming Engine. For more information, see How to connect a live source to Wowza Streaming Engine.

    Notes:
    • Wowza Streaming Engine requires RTMP and RTSP sources to provide a user name and password to connect to a live application. For information on how to turn off authentication, see Managing live source authentication settings.

    • If your Akamai endpoint will ingest an HDS stream, you must change the sanjoseChunkDurationTarget value. The Akamai ingest servers only support 6-second chunk durations, but the Wowza Streaming Engine default chunk duration is 10 seconds for HDS. Therefore, the sanjoseChunkDurationTarget property value in Wowza Streaming Engine Manager must be set to 6000 milliseconds (6 seconds):

      1. On the application's Properties tab, click San Jose Streaming Packetizer in the Quick Links bar, and then click Edit.

      2. Check the box next to sanjoseChunkDurationTarget, and set the Value to 6000 milliseconds.

      3. Click Save, and then restart the application when prompted to apply the changes.

      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.

    Create a stream target to send the stream to Akamai


    After the live application is created in Wowza Streaming Engine, it must be configured to send the stream to Akamai.

    1. In the contents panel, click Stream Targets and then click Add Stream Target.

    2. On the Select Destination page, click Akamai and then click Next.

    3. On the Destination Options page, select Adobe RTMP, Apple HLS, or Adobe HDS, depending on the type of stream you provisioned in Akamai, and then click Next.

    4. On the Configure Target page, provide the following information:

      All protocols


      • 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. For clarity, we recommend including the bitrate in the Stream Target Name.

      • Source Stream Name - The name of the incoming stream that that you specified in Wowza Streaming Engine when you set up the video source.

      • Akamai Stream ID - The Akamai Stream ID that's listed on the Media Services Live page in Luna Control Center. The stream ID appears in parentheses after the Stream Name.

      RTMP only


      • Destination Stream Name - A name for the destination stream in the form of [name]_[angle]_[bitrate].

        • The [name] value can be any string, but must be identical for all of your event's streams in order to be treated as a single event.

        • The [angle] value can be any value, but is intended to identify the camera angle.

        • The [bitrate] value should be the total bitrate of the video in kilobits per second (Kbps).

          The underscore (_) character is the only allowed field separator, and fields after the third field ([bitrate]) in the destination stream name are truncated. Streams that aren't delivered in this format can't be played.

      • Destination Port - The port number for your connection. RTMP connections use port 1935 by default.

      • User Name and Password - Your Akamai username and password for authentication, which you can find in the stream details on the Media Services Live page in Luna Control Center.

      • Send To Backup Server - Select this option to have Wowza Streaming Engine send a redundant stream to Akamai 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.

      Adobe HDS and Apple HLS only


      • Destination Stream Name - A simple name for the destination stream. When sending multiple bitrate renditions to the same Akamai Stream ID, the Destination Stream Name must be unique for each rendition to prevent file collisions on the Akamai HD network. One way to ensure uniqueness is to include the bitrate in the name.

      • Akamai Host ID - The Akamai stream's host ID, which you can find in the Host Name column on the Media Services Live page in Luna Control Center.

      • Playlist Count - The number of time-based chunks to maintain in the destination stream's playlist. The default value (0) means this application's associated live stream packetizer property (cupertinoPlaylistChunkCount) specifies the value.

      • Akamai Event Name - The name of the event for this stream if you defined one in the Event Scheduler in Luna Control Center.

      • Adaptive Groups - The name of an adaptive group to which this stream target belongs. If the stream target belongs to more than one adaptive group, you can enter the group names as a comma-separated list. Adaptive groups enable you to collect all streams with the same adaptive group name into one adaptive bitrate stream that has unique adaptive bitrate playback URLs. For more information, see About Adaptive Groups.

      • Destination Server - The Akamai entry point that the source stream will be sent to. Choose primary, backup, or redundant. If you select redundant entry points, a manifest or playlist is generated that has playback URLs for the primary and backup streams.

      • Apple HLS Stream Renditions - The types of renditions in the stream. Choose Audio and video or Audio only.

      • Adobe HDS Representation ID - A unique alphanumeric identifier for the stream representation, which is used to name the HDS stream-level manifest and bootstrap files, and in the bootstrapInfo ID and media URL values in the stream-level manifest. If not provided, the identifier is derived from the bitrate of the stream, for example, 752kbps.

      Note: For more information on target configuration settings, see the contextual Help panel in Wowza Streaming Engine Manager.
    5. Click Finish.

    Send adaptive bitrate streams to Akamai

    If you're sending a stream that has multiple bitrates to Akamai, you must create a stream target for each rendition. Repeat the steps above in Create a stream target to send the stream to Akamai for each rendition that you want to send to Akamai for adaptive bitrate playback. The easiest way to do this is to create the first stream target, and then click the Copy icon for the target and change the Stream Target Name. After creating the new target, click its Edit icon to change the Source Stream Name and Destination Stream Name. Use the information in the Media Services Live page of Luna Control Center as needed for your additional stream targets. Depending on the stream protocol, the following must also be completed:

    • For an adaptive bitrate Adobe HDS or Apple HLS stream, you must create the stream targets in the order they should appear in the adaptive bitrate playlist (typically descending bitrates) to ensure proper playback. Note that the stream targets are sorted by name in Wowza Streaming Engine Manager, and might not reflect the order in which they were added unless they are named in a way that would order them lexicographically. For example: hls_1_<name> for the highest bitrate, hls_2_<name> for the next highest, and so on. This isn't necessary for RTMP streams.

    • For each stream target that you create for an adaptive bitrate RTMP stream, you must also set the stream target's Adaptive Streaming property to true. This isn't necessary for Adobe HDS or Apple HLS streams. 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.

    HTTPS streaming and playback of Apple HLS

    You can use custom properties to enable Wowza Streaming Engine to send and playback Apple HLS streams over HTTPS.

    Note: This doesn't apply to RTMP or Adobe HDS streams.

    Send an Apple HLS stream over HTTPS


    1. On the Stream Target page, click the Edit icon, and then click the Custom tab at the top of the page.

    2. Click Edit, click Add Custom Property, specify the following property settings, and then click Add:

      • Name - Enter sendSSL.

      • Type - Select Boolean.

      • Value - Enter true to send Apple HLS streams over HTTPS. If the value is set to false or the custom property is not added, Apple HLS streams are sent to the Akamai HD network over HTTP.

    3. Click Save.

    Playback an Apple HLS stream over HTTPS


    1. On the Stream Target page, click the Edit icon, and then click the Custom tab at the top of the page.

    2. Click Edit, click Add Custom Property, enter the following information, and then click Add:

      • Name - Enter playbackSSL.

      • Type - Select Boolean.

      • Value - Enter true to encode the playback URLs with HTTPS. If the value is set to false or the custom property is not added, Apple HLS playback URLs are encoded with HTTP.

    3. Click Save.

    Enable Stream Targets


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

    If you don't see a checkmark next to Stream Targets in the contents panel of the application, click Stream Targets in the contents panel and then click Enable Stream Targets. When prompted, click Restart Now so your change takes effect. 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.



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



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

    • Waiting. The target is enabled but isn't yet pushing the stream to the Akamai destination because either the target's configured source stream isn't connected to the Wowza Streaming Engine input or Wowza Streaming Engine hasn't completed initializing the connection to the Akamai destination.

    • Active. If using RTMP, the Wowza Streaming Engine instance successfully connected to the Akamai destination and is actively pushing the stream. If using Apple HLS or Adobe HDS, the stream is actively being pushed to the Akamai destination and there have been no errors.

    • Error. If using RTMP, the Wowza Streaming Engine instance unsuccessfully tried to connect to the Akamai destination. If using Apple HLS or Adobe HDS, the Wowza Streaming Engine instance unsuccessfully tried to push the streaming files to the Akamai 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 the live application in Wowza Streaming Engine. The live application ingests the live stream and sends it to Akamai.

    2. In Wowza Streaming Engine Manager, verify that the stream is working:

      • Click Incoming Streams in the contents panel and then click 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.

      • Click Stream Targets in the contents panel. The Status of the target should be Active.

    3. In Luna Control Center, verify that Akamai is receiving the stream and distributing it to endpoints across its network:

      • Click the Monitor menu, choose Monitor Streams, and then choose the product. Check to see that there's an Ingest Bit Rate and an Egress Bit Rate for your stream.

      • Try the playback URL(s) in a test player, such as the Wowza test players or one of the Akamai players listed below.

        RTMP only


        You can also try the playback URLs for RTMP streams in the following Akamai test players:

        • Flash Entry point Debug Player You must log in to your account to use this player, and you must select the desired stream from the provided dropdown menu.

        • Akamai RTMP Test Player This player assumes you have HD Flash 1.0 delivery enabled in the associated Akamai configuration.

        For RTMP streams, Akamai playback URLs take the following format:

        HD Flash 1.0 playback http://[host_name]-lh.akamaihd.net/[EVENT_ANGLE_BITRATE]@[StreamID]
        HDS playback http://[host_name]-lh.akamaihd.net/z/[EVENT_ANGLE]@[StreamID]/manifest.f4m
        HLS playback http://[host_name]-lh.akamaihd.net/i/[EVENT_ANGLE]@[StreamID]/master.m3u8

        Adobe HDS and Apple HLS only


        You can also try the playback URLs for Adobe HDS streams in the Akamai HDS Test Player. To test the playback Apple HLS streams, you can also use any HLS player, such as the stock iOS media player or Safari.

        For Apple HLS and Adobe HDS streams, Akamai playback URLs take the following format:

        For Primary streams:

        HLS playback http://[AkamaiHostId].akamaihd.net/hls/live/[AkamaiStreamId]/[DestinationStreamName]/playlist.m3u8
        HDS playback http://[AkamaiHostId].akamaihd.net/hds/live/[AkamaiStreamId]/[DestinationStreamName]/setlevelmanifest.f4m

        For Backup streams:

        HLS playback http://[AkamaiHostId].akamaihd.net/hls/live/[AkamaiStreamId]-b/[DestinationStreamName]/playlist.m3u8
        HDS playback http://[AkamaiHostId].akamaihd.net/hds/live/[AkamaiStreamId]-b/[DestinationStreamName]/setlevelmanifest.f4m

        For Redundant streams:

        HLS primary http://[AkamaiHostId].akamaihd.net/hls/live/[AkamaiStreamId]/[DestinationStreamName]_red/playlist.m3u8
        HLS backup http://[AkamaiHostId].akamaihd.net/hls/live/[AkamaiStreamId]-b/[DestinationStreamName]_red/playlist.m3u8
        HDS primary http://[AkamaiHostId].akamaihd.net/hds/live/[AkamaiStreamId]/[DestinationStreamName]_red/setlevelmanifest.f4m
        HDS backup http://[AkamaiHostId].akamaihd.net/hds/live/[AkamaiStreamId]-b/[DestinationStreamName]_red/setlevelmanifest.f4m

        For Primary streams in an adaptive group:

        HLS playback http://[AkamaiHostId].akamaihd.net/hls/live/[AkamaiStreamId]/[AdaptiveGroup]/playlist.m3u8
        HDS playback http://[AkamaiHostId].akamaihd.net/hds/live/[AkamaiStreamId]/[AdaptiveGroup]/setlevelmanifest.f4m

        For Backup streams in an adaptive group:
        HLS playback http://[AkamaiHostId].akamaihd.net/hls/live/[AkamaiStreamId]-b/[AdaptiveGroup]/playlist.m3u8
        HDS playback http://[AkamaiHostId].akamaihd.net/hds/live/[AkamaiStreamId]-b/[AdaptiveGroup]/setlevelmanifest.f4m

        For targets defined with an Akamai Event Name, the event name should precede the [DestinationStreamName] or [AdaptiveGroup] in the URL, such as:

        HLS playback http://[AkamaiHostId].akamaihd.net/hls/live/[AkamaiStreamId]/[AkamaiEventName]/[DestinationStreamName]/playlist.m3u8

    4. Stop the stream in the source camera or encoder to end your test connection.

    More resources




    Originally Published: For Wowza Streaming Engine 4.2.0 on 06-16-2015.
    Updated: For Wowza Streaming Engine 4.5.0 on 06-23-2016.

    If you're having problems or want to discuss this article, post in our forum.