• How to create Apple App Store compliant streams (audio only rendition)

    This article describes a method for instructing the Wowza media server to automatically generate live and on-demand multi-bitrate streams for delivery to Apple iOS devices. This method supports single streams and SMIL-based streams. This feature makes it easier to get an application through the Apple App Store and to generate a 192 kbps or lower audio-only stream that complies with Apple App Store rules for 3G delivery.

    Contents


    Configuring a streaming application
    Generating a multi-bitrate audio stream for Apple devices
    Using SMIL files for multi-bitrate streams with audio-only items
    Improving bitrate switching between audio streams
    More resources

    Configuring a streaming application


    Configure your application for streaming using one of the following tutorials:


    Generating a multi-bitrate audio stream for Apple devices


    Modify Cupertino Streaming Packetizer properties (live applications) and HTTP Streamers Cupertino Settings properties (live and VOD applications).

    Wowza Streaming Engine Manager configuration

    Live applications


    1. In Wowza Streaming Engine Manager, click the Applications tab and then click the name of your live application (such as live) in the contents pane.

    2. On the live application page Properties tab, click Cupertino Streaming Packetizer in the Quick Links bar.

      Note: Access to the Properties tab is limited to administrators with advanced permissions. For more information, see Manage credentials.
    3. Click Edit in the Cupertino Streaming Packetizer properties area, select the Enabled check box next to cupertinoCreateAudioOnlyRendition, and then set it to True. This property creates an audio-only stream.

    4. Click Save, and then restart the live application to apply the changes.

    Live and VOD applications


    1. In Wowza Streaming Engine Manager, click the Applications tab and then click the name of your application in the contents pane.

    2. On the application page Properties tab, click HTTP Streamers Cupertino Settings in the Quick Links bar.

      Note: Access to the Properties tab is limited to administrators with advanced permissions. For more information, see Manage credentials.
    3. Click Edit in the HTTP Streamers Cupertino Settings properties area, select the Enabled check box next to cupertinoAutoCreateMultibitratePlaylist, and then set it to True.

    4. Repeat the previous step to enable the remaining properties and configure them using the following values:

      Name
      Value
      cupertinoUseCalculatedVideoBitrate true
      cupertinoUseCalculatedAudioBitrate true
      cupertinoDefaultVideoBitrate 250000
      cupertinoMaxCalculatedVideoBitrate 0
      cupertinoDefaultAudioBitrate 64000
      cupertinoMaxCalculatedAudioBitrate 64000
      cupertinoBitrateAdjustmentFactor 110

    5. Click Save, and then restart the application to apply the changes.
    Note: When using a live stream repeater (origin/edge) configuration with this setup, be sure to set the above properties on both the origin and edge.

    XML configuration

    Live applications


    1. Use a text editor to open the [install-dir]/conf/[application]/Application.xml file for your live application and add the following property to the <LiveStreamPacketizer>/<Properties> container. Be sure to add the property to the correct <Properties> container in Application.xml as there are several such containers in the file.
      <Property>
          <Name>cupertinoCreateAudioOnlyRendition</Name>
          <Value>true</Value>
          <Type>Boolean</Type>
      </Property>
    2. Restart the Wowza media server software to apply the changes.

    Live and VOD applications


    1. Use a text editor to open the [install-dir]/conf/[application]/Application.xml file for your application and add the following properties to the <HTTPStreamer>/<Properties> container. Be sure to add the properties to the correct <Properties> container in Application.xml as there are several such containers in the file.
      <Property>
          <Name>cupertinoAutoCreateMultibitratePlaylist</Name>
          <Value>true</Value>
          <Type>Boolean</Type>
      </Property>
      <Property>
          <Name>cupertinoUseCalculatedVideoBitrate</Name>
          <Value>true</Value>
          <Type>Boolean</Type>
      </Property>
      <Property>
          <Name>cupertinoUseCalculatedAudioBitrate</Name>
          <Value>true</Value>
          <Type>Boolean</Type>
      </Property>
      <Property>
          <Name>cupertinoDefaultVideoBitrate</Name>
          <Value>250000</Value>
          <Type>Integer</Type>
      </Property>
      <Property>
          <Name>cupertinoMaxCalculatedVideoBitrate</Name>
          <Value>0</Value>
          <Type>Integer</Type>
      </Property>
      <Property>
          <Name>cupertinoDefaultAudioBitrate</Name>
          <Value>64000</Value>
          <Type>Integer</Type>
      </Property>
      <Property>
          <Name>cupertinoMaxCalculatedAudioBitrate</Name>
          <Value>64000</Value>
          <Type>Integer</Type>
      </Property>
      <Property>
          <Name>cupertinoBitrateAdjustmentFactor</Name>
          <Value>110</Value>
          <Type>Integer</Type>
      </Property>
    2. Restart the Wowza media server software to apply the changes.

    With this in place, the Wowza media server creates and packetizes an audio-only rendition of all incoming streams, which is available for use in any playlist. If you play any live or on-demand stream directly, the Wowza media server generates a multi-bitrate playlist with the two renditions. One rendition includes the audio and video and the other rendition is audio-only. As long as the audio portion of the live or video-on-demand stream is 192 kbps or less, the stream conforms to Apple App Store 3G rules.

    Note: When using a live stream repeater (origin/edge) configuration with this setup, be sure to set the LiveStreamPacketizers value on the edge to cupertinostreamingrepeater and set the above properties on both the origin and edge.

    Using SMIL files for multi-bitrate streams with audio-only items


    If you want to use Synchronized Multimedia Integration Language (SMIL) files to describe a multi-bitrate stream and use the audio from one of the live or VOD streams as one of the playlist items, then you can add the <param name="audioOnly" value="TRUE" valuetype="data"/> statement to the <video> element in the SMIL file to select only the audio track. For example, if you have two live streams called hi-livestream and low-livestream and you want to create a three-stream, multi-bitrate playlist with the third rendition being the audio from low-livestream, the SMIL file should look like this:
    <smil>
        <head>
        </head>
        <body>
            <switch>
                <video src="hi-livestream" system-bitrate="500000"/>
                <video src="lo-livestream" system-bitrate="250000"/>
                <video src="lo-livestream" system-bitrate="64000">
                    <param name="audioOnly" value="TRUE" valuetype="data"/>
                </video>
            </switch>
        </body>
    </smil>
    Similarly, for two file renditions in a multi-bitrate VOD presentation:
    <smil>
        <head>
        </head>
        <body>
            <switch>
                <video src="hi-sample.mp4" system-bitrate="500000"/>
                <video src="lo-sample.mp4" system-bitrate="250000"/>
                <video src="lo-sample.mp4" system-bitrate="64000">
                    <param name="audioOnly" value="TRUE" valuetype="data"/>
                </video>
            </switch>
        </body>
    </smil>
    To test this, you can play the audio-only stream directly:

    http://[wowza-ip-address]:1935/[app-name]/[stream-name]/playlist.m3u8?wowzaaudioonly

    Improving bitrate switching between audio streams


    Bitrate switching between audio-only streams that are packetized as elementary audio streams and streams that are packetized as transport streams has changed since the release of iOS 6. To take advantage of improved bitrate switching and audio-only streams in Wowza Streaming Engine and in Wowza Media Server 3.5.1 and later, configure the cupertinoPacketizeAllStreamsAsTS property.

    Wowza Streaming Engine Manager configuration

    Live applications


    1. In Wowza Streaming Engine Manager, click the Applications tab and then click the name of your live application (such as live) in the contents pane.

    2. On the live application page Properties tab, click Cupertino Streaming Packetizer in the Quick Links bar.

      Note: Access to the Properties tab is limited to administrators with advanced permissions. For more information, see Manage credentials.
    3. Click Edit in the Cupertino Streaming Packetizer properties area, select the Enabled check box next to cupertinoPacketizeAllStreamsAsTS, and then set it to True.

    4. Click Save, and then restart the live application to apply the changes.

    Live and VOD applications


    1. In Wowza Streaming Engine Manager, click the Applications tab and then click the name of your application in the contents pane.

    2. On the application page Properties tab, click HTTP Streamers Cupertino Settings in the Quick Links bar.

      Note: Access to the Properties tab is limited to administrators with advanced permissions. For more information, see Manage credentials.
    3. Click Edit in the HTTP Streamers Cupertino Settings area, select the Enabled check box next to cupertinoPacketizeAllStreamsAsTSVOD, and then set it to True.

    4. Click Save, and then restart the application to apply the changes.

    XML configuration

    Live applications


    1. Use a text editor to open the [install-dir]/conf/[application]/Application.xml file for your live application and add the following property to the <LiveStreamPacketizer>/<Properties> container. Be sure to add the property to the correct <Properties> container in Application.xml as there are several such containers in the file.
      <Property>
          <Name>cupertinoPacketizeAllStreamsAsTS</Name>
          <Value>true</Value>
          <Type>Boolean</Type>
      </Property>
    2. Restart the Wowza media server software to apply the changes.

    Live and VOD applications


    1. Use a text editor to open the [install-dir]/conf/[application]/Application.xml file for your application and add the following property to the <HTTPStreamer>/<Properties> container. Be sure to add the property to the correct <Properties> container in Application.xml as there are several such containers in the file.
      <Property>
          <Name>cupertinoPacketizeAllStreamsAsTS</Name>
          <Value>true</Value>
          <Type>Boolean</Type>
      </Property>
    2. Restart the Wowza media server software to apply the changes.

    More resources


    How to filter audio-only rendition in Apple HLS auto-generated multi-bitrate playlist (ModuleCupertinoAutoMultibitrateFilter)

    How to add poster frames to Apple HTTP streams (ID3 metadata) for App Store audio renditions (ModuleCupertinoLiveAttachPicture]

    How to do adaptive bitrate streaming

    Originally Published: 10-22-2010.
    Updated: For Wowza Streaming Engine on 06-16-2015.

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