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

    This article descibes a method for instructing Wowza Media Server to automatically generate a multi-bitrate live and video on demand stream for delivery to Apple iOS devices. This method supports both single stream and SMIL-based streams. This feature makes it easier to get an application through the Apple AppStore. It makes it easier to generate a 64 Kbps or lower stream for conformance to the Apple AppStore rules for 3G delivery.

    Configure live streaming application

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



    Configure Application.xml

    Open [install-dir]/conf/live/Application.xml in a text editor and make the following changes:

    1. (Live only) Add the following property to the LiveStreamPacketizer/Properties container:
      Code:
      <Property>
          <Name>cupertinoCreateAudioOnlyRendition</Name>
          <Value>true</Value>
          <Type>Boolean</Type>
      </Property>
    2. Add the following properties to the HTTPStreamer/Properties container:
      Code:
      <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>


    With this in place, Wowza Media Server will create/packetize an audio-only rendition of all incoming streams. This stream is available for use in any playlist. If you simply play any live or video on demand stream directly, Wowza Media Server will generate a multi-bitrate playlist with the two renditions. One rendition will include the audio and video and the other rendition will be audio-only. As long as the audio portion of the live or video on demand stream is 64 Kbps or less, the stream will conform to Apple AppStore 3G rules.

    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 video on demand 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 2 live streams called hi-livestream and low-livestream and you want to create a 3 stream multi-bitrate playlist with the 3rd rendition being the audio from low-livestream, the SMIL file should look like this:
    Code:
    <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>
    To test this, you can play the audio-only stream directly:
    Code:
    http://[wowza-ip-address]:1935/[app-name]/[stream-name]/playlist.m3u8?wowzaaudioonly
    Note: When using a live 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.

    Note: The behavior regarding bitrate-switching and audio-only streams has changed starting in iOS 6.x. It seems that switching between audio-only streams that are packetized as elementary audio streams and streams that are packetized as transport streams doesn't work as it did in the past. We have improved how this works starting in Wowza Media Server 3.5.0.01. To take advantage of the improved functionality add the following property to both the LiveStreamPacketizer/Properties and HTTPStreamer/Properties containers in [install-dir]/conf/[application]/Application.xml:
    Code:
    <Property>
        <Name>cupertinoPacketizeAllStreamsAsTS</Name>
        <Value>true</Value>
        <Type>Boolean</Type>
    </Property>

    Comments 126 Comments
    1. vjagannathan -
      Thanks Richard. I upgraded to Wirecast 4 and used the same encoding settings for the 'mobileDemo_med' stream and now the bitrate is off by 9.75%. So that's taken care of.

      However, the main issue is to get the tool to identify the 64k audio-only feed in the SMIL file, which it still fails to do. Just to confirm, the contents of the SMIL file is as follows:

      <smil>
      <head>
      </head>
      <body>
      <switch>
      <video src="mobileDemo_med" system-bitrate="64000"/>
      <param name="audioOnly" value="TRUE" valuetype="data"/>
      <video src="mobileDemo_med" system-bitrate="364000"/>
      <video src="mobileDemo_hi" system-bitrate="1064000"/>
      </switch>
      </body>
      </smil>

      Is there anything I need to change above?

      When I run the tool, it only detects the second and third playlist items in the SMIL file above:

      mediastreamvalidator validate --timeout=60 http://[rtmp-server]:1935/[application]/_definst_/live/mobileDemo2.smil/playlist.m3u8
      Validating http://[rtmp-server]:1935/[application]/_definst_/live/mobileDemo2.smil/playlist.m3u8 against iOS 4.2.1
      Validating child playlist http://[rtmp-server]:1935/[application]/_definst_/live/mobileDemo_med/playlist.m3u8?wowzasessionid=1200827959 [364.00 kbit/s]
      Validating child playlist http://[rtmp-server]:1935/[application]/_definst_/live/mobileDemo_hi/playlist.m3u8?wowzasessionid=1200827959 [1.06 Mbit/s]

      Instead, shouldn't it also detect the audio-only stream from 'mobileDemo_med'? Something like:

      mediastreamvalidator validate --timeout=60 http://[rtmp-server]:1935/[application]/_definst_/live/mobileDemo2.smil/playlist.m3u8
      Validating http://[rtmp-server]:1935/[application]/_definst_/live/mobileDemo2.smil/playlist.m3u8 against iOS 4.2.1
      Validating child playlist http://[rtmp-server]:1935/[application]/_definst_/live/mobileDemo_med/playlist.m3u8?wowzasessionid=1200827959 [64.00 kbit/s]
      Validating child playlist http://[rtmp-server]:1935/[application]/_definst_/live/mobileDemo_med/playlist.m3u8?wowzasessionid=1200827959 [364.00 kbit/s]
      Validating child playlist http://[rtmp-server]:1935/[application]/_definst_/live/mobileDemo_hi/playlist.m3u8?wowzasessionid=1200827959 [1.06 Mbit/s]
    1. rrlanham -
      The audioonly param is not inside the video tag. Change this:
      Code:
      <video src="mobileDemo_med" system-bitrate="64000"/>
      <param name="audioOnly" value="TRUE" valuetype="data"/>
      To this:
      Code:
      <video src="mobileDemo_med" system-bitrate="64000">
      <param name="audioOnly" value="TRUE" valuetype="data"/>
      </video>
      Nothing wrong with using Wirecast, but again, those results can be fine tuned just by adjusting the "target": the video tag system-bitrate attribute. Your settings are are a little inaccurate.
      <video src="mobileDemo_med" system-bitrate="364000"/>

      Richard
    1. vjagannathan -
      Aah! Can't believe I missed that. It works now :-)

      Re: fine-tuning the system-bitrate attribute, tried it out and it's down to -0.27%. Thanks!

      In the case of VoD content, I get the following warning when I run the tool against a regular mp4 (yet to try SMIL files):

      WARNING: The playlist should use relative URIs to reduce its size.

      Is that something that can be fixed? Or does it not matter?
    1. rrlanham -
      I don't think it is critical to Apple validation, but you can add cupertinoRelativePlaylistPlaylists Property to the Application.xml /LiveStreamPacketizer and HTTPStreamer Properties containers:
      Code:
      <LiveStreamPacketizer>
      <!-- Properties defined here will override any properties defined in conf/LiveStreamPacketizers.xml for any LiveStreamPacketizers loaded by this applications -->
      <Properties>
      <Property>
      <Name>cupertinoRelativePlaylistPlaylists</Name>
      <Value>true</Value>
      <Type>Boolean</Type>
      </Property>
      </Properties>
      </LiveStreamPacketizer>
      <HTTPStreamer>
      <!-- Properties defined here will override any properties defined in conf/HTTPStreamers.xml for any HTTPStreamer loaded by this applications -->
      <Properties>
      <Property>
      <Name>cupertinoRelativePlaylistPlaylists</Name>
      <Value>true</Value>
      <Type>Boolean</Type>
      </Property>
      </Properties>
      </HTTPStreamer>
      Richard
    1. vjagannathan -
      That did the trick. Thanks!

      However, I ran the tool against the sample Extremists.m4v clip and the audio-only bitrate is off by 13.11%. It looks like the audio-only bitrate stream exactly matches the audio bitrate of the video instead of bringing it down to 64k.

      mediastreamvalidator validate http://[rtmp-server]:1935/[application]/_definst_/vod/Extremists.m4v/playlist.m3u8
      Validating http://[rtmp-server]:1935/[application]/_definst_/vod/Extremists.m4v/playlist.m3u8 against iOS 4.2.1
      Validating child playlist http://[rtmp-server]:1935/[application]/_definst_/vod/Extremists.m4v/playlist.m3u8?wowzaaudioonly&wowzasessionid=1542750088 [64.00 kbit/s]
      Validating child playlist http://[rtmp-server]:1935/[application]/_definst_/vod/Extremists.m4v/playlist.m3u8?wowzasessionid=1542750088 [663.80 kbit/s]
      Child playlist http://[rtmp-server]:1935/[application]/_definst_/vod/Extremists.m4v/playlist.m3u8?wowzaaudioonly&wowzasessionid=1542750088 is VOD
      Child playlist http://[rtmp-server]:1935/[application]/_definst_/vod/Extremists.m4v/playlist.m3u8?wowzasessionid=1542750088 is VOD

      ------------------------------------------------------------------------------------------------------------------------------------------------------------------
      REPORT FOR CHILD PLAYLIST 'http://[rtmp-server]:1935/[application]/_definst_/vod/Extremists.m4v/playlist.m3u8?wowzaaudioonly&wowzasessionid=1542750088'
      ------------------------------------------------------------------------------------------------------------------------------------------------------------------

      Average segment duration: 10.50 seconds
      Playlist target bitrate: 64.00 kbit/s
      Average segment bitrate: 73.67 kbit/s (13.13 % of target)

      Audio codec: aac
      Audio sample rate: 48000 Hz

      ---------------------------------------------------------------------------------------------------------------------------------------------------
      REPORT FOR CHILD PLAYLIST 'http://[rtmp-server]:1935/[application]/_definst_/vod/Extremists.m4v/playlist.m3u8?wowzasessionid=1542750088'
      ---------------------------------------------------------------------------------------------------------------------------------------------------

      Average segment duration: 10.50 seconds
      Playlist target bitrate: 663.80 kbit/s
      Average segment bitrate: 662.14 kbit/s (-0.25 % of target)
      Average segment structural overhead: 57.07 kbit/s (8.62 %)

      Video codec: avc1
      Video resolution: 416x240 pixels
      Video frame rate: 29.97 fps
      Average video bitrate: 531.51 kbit/s
      H.264 profile: Baseline
      H.264 level: 3.0

      Audio codec: aac
      Audio sample rate: 48000 Hz
      Average audio bitrate: 73.56 kbit/s
    1. rrlanham -
      Wowza just extracts the audio track, it has to be 64kbs

      Richard
    1. vjagannathan -
      I see. Good to know, thanks!
    1. dArignac -
      Hello,

      I configured the Application as written in this guide here. However, the Apple media stream validator finds several problems and I don't know how to solve them properly. Any help is appreciated. We're using 2.2.4 build27452

      Code:
      ----------------------------------------------------------------------------------------------------------------------------------------------
      REPORT FOR CHILD PLAYLIST 'http://<host>/<app>/_definst_/<stream-1>/playlist.m3u8?wowzasessionid=762196559&wowzaaudioonly'
      ----------------------------------------------------------------------------------------------------------------------------------------------
      
      WARNING: Format of date string returned in http response header does not conform to HTTP/1.1: Wed, 25 May 2011 07:04:34 GMT
      
      ERROR: Invalid media segment: The validator helper exited due to a fatal error: track 256 is not in program 0.
       6:    media_188.ts?wowzasessionid=1126435464
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      
      WARNING: Media segment bitrate outside of target playlist bitrate by 200.000 % (203704 vs. 64000 bps, limit is 10 %).
       8:    media_189.ts?wowzasessionid=1126435464
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      
      ERROR: Invalid media segment: segment type has changed from 'audio es'to 'mpeg2ts'.
       8:    media_189.ts?wowzasessionid=1126435464
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      
      WARNING: Media segment bitrate outside of target playlist bitrate by 200.000 % (193848 vs. 64000 bps, limit is 10 %).
      10:    media_190.ts?wowzasessionid=1126435464
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      
      ERROR: Invalid media segment: segment type has changed from 'audio es'to 'mpeg2ts'.
      10:    media_190.ts?wowzasessionid=1126435464
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      Our playlist ist this:

      Code:
      #EXTM3U
      #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=64000
      http://<host>/<app>/_definst_/<stream-1>/playlist.m3u8?wowzasessionid=762196559&wowzaaudioonly
      #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=864000
      http://<host>/<app>/_definst_/<stream-2>/playlist.m3u8?wowzasessionid=1362193855
      #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=160000
      http://<host>/<app>/_definst_/<stream-1>/playlist.m3u8?wowzasessionid=1126435464
      Our Application.xml:

      Code:
      <Root>
      <Application>
      <!-- Uncomment to set application level timeout values
      <ApplicationTimeout>60000</ApplicationTimeout>
      <PingTimeout>12000</PingTimeout>
      <ValidationFrequency>8000</ValidationFrequency>
      <MaximumPendingWriteBytes>0</MaximumPendingWriteBytes>
      <MaximumSetBufferTime>60000</MaximumSetBufferTime>
      <MaximumStorageDirDepth>25</MaximumStorageDirDepth>
      -->
      <Connections>
      <AutoAccept>true</AutoAccept>
      <AllowDomains></AllowDomains>
      </Connections>
      <!--
      StorageDir path variables
      ${com.wowza.wms.AppHome} - Application home directory
      ${com.wowza.wms.ConfigHome} - Configuration home directory
      ${com.wowza.wms.context.VHost} - Virtual host name
      ${com.wowza.wms.context.VHostConfigHome} - Virtual host config directory
      ${com.wowza.wms.context.Application} - Application name
      ${com.wowza.wms.context.ApplicationInstance} - Application instance name
      -->
      <Streams>
      <StreamType>live</StreamType>
      <StorageDir>${com.wowza.wms.context.VHostConfigHome}/content</StorageDir>
      <KeyDir>${com.wowza.wms.context.VHostConfigHome}/keys</KeyDir>
      <!-- LiveStreamPacketizers (separate with commas): cupertinostreamingpacketizer, smoothstreamingpacketizer, sanjosestreamingpacketizer, cupertinostreamingrepeater, smoothstreamingrepeater, sanjosestreamingrepeater -->
      <LiveStreamPacketizers>cupertinostreamingpacketizer</LiveStreamPacketizers>
      <!-- Properties defined here will override any properties defined in conf/Streams.xml for any streams types loaded by this application -->
      <Properties></Properties>
      </Streams>
      <!-- HTTPStreamers (separate with commas): cupertinostreaming, smoothstreaming, sanjosestreaming -->
      <HTTPStreamers>cupertinostreaming</HTTPStreamers>
      <SharedObjects>
      <StorageDir></StorageDir>
      </SharedObjects>
      <Client>
      <IdleFrequency>-1</IdleFrequency>
      <Access>
      <StreamReadAccess>*</StreamReadAccess>
      <StreamWriteAccess>*</StreamWriteAccess>
      <StreamAudioSampleAccess></StreamAudioSampleAccess>
      <StreamVideoSampleAccess></StreamVideoSampleAccess>
      <SharedObjectReadAccess>*</SharedObjectReadAccess>
      <SharedObjectWriteAccess>*</SharedObjectWriteAccess>
      </Access>
      </Client>
      <RTP>
      <!-- RTP/Authentication/[type]Methods defined in Authentication.xml. Default setup includes; none, basic, digest -->
      <Authentication>
      <PublishMethod>digest</PublishMethod>
      <PlayMethod>none</PlayMethod>
      </Authentication>
      <!-- RTP/AVSyncMethod. Valid values are: senderreport, systemclock, rtptimecode -->
      <AVSyncMethod>senderreport</AVSyncMethod>
      <MaxRTCPWaitTime>12000</MaxRTCPWaitTime>
      <IdleFrequency>75</IdleFrequency>
      <RTSPSessionTimeout>90000</RTSPSessionTimeout>
      <RTSPMaximumPendingWriteBytes>0</RTSPMaximumPendingWriteBytes>
      <RTSPBindIpAddress></RTSPBindIpAddress>
      <RTSPConnectionIpAddress>0.0.0.0</RTSPConnectionIpAddress>
      <RTSPOriginIpAddress>127.0.0.1</RTSPOriginIpAddress>
      <IncomingDatagramPortRanges>*</IncomingDatagramPortRanges>
      <!-- Properties defined here will override any properties defined in conf/RTP.xml for any depacketizers loaded by this application -->
      <Properties>
      </Properties>
      </RTP>
      <MediaCaster>
      <!-- Properties defined here will override any properties defined in conf/MediaCasters.xml for any MediaCasters loaded by this applications -->
      <Properties>
      <Property>
         <Name>forceInterleaved</Name>
         <Value>true</Value>
         <Type>Boolean</Type>
      </Property>
      </Properties>
      </MediaCaster>
      <MediaReader>
      <!-- Properties defined here will override any properties defined in conf/MediaReaders.xml for any MediaReaders loaded by this applications -->
      <Properties>
      </Properties>
      </MediaReader>
      <MediaWriter>
      <!-- Properties defined here will override any properties defined in conf/MediaWriter.xml for any MediaWriter loaded by this applications -->
      <Properties>
      </Properties>
      </MediaWriter>
      <LiveStreamPacketizer>
      <!-- Properties defined here will override any properties defined in conf/LiveStreamPacketizers.xml for any LiveStreamPacketizers loaded by this applications -->
      <Properties>
      <Property>
      <Name>cupertinoChunkDurationTarget</Name>
      <Value>10000</Value>
      <Type>Integer</Type>
      </Property>
      <Property>
      <Name>cupertinoMaxChunkCount</Name>
      <Value>10</Value>
      <Type>Integer</Type>
      </Property>
      <Property>
      <Name>cupertinoPlaylistChunkCount</Name>
      <Value>3</Value>
      <Type>Integer</Type>
      </Property>
      <Property>
      <Name>cupertinoRepeaterChunkCount</Name>
      <Value>3</Value>
      <Type>Integer</Type>
      </Property>
                                      <!-- according to http://www.wowza.com/forums/content....ppStore-64Kbps -->
                                      <Property>
                                              <Name>cupertinoCreateAudioOnlyRendition</Name>
                                              <Value>true</Value>
                                              <Type>Boolean</Type>
                                      </Property>
      </Properties>
      </LiveStreamPacketizer>
      <HTTPStreamer>
      <!-- Properties defined here will override any properties defined in conf/HTTPStreamers.xml for any HTTPStreamer loaded by this applications -->
      <Properties>
                                      <!-- according to http://www.wowza.com/forums/content....ppStore-64Kbps -->
                                      <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>cupertinoMaxCalulatedVideoBitrate</Name>
                                              <Value>0</Value>
                                              <Type>Integer</Type>
                                      </Property>
                                      <Property>
                                              <Name>cupertinoDefaultAudioBitrate</Name>
                                              <Value>64000</Value>
                                              <Type>Integer</Type>
                                      </Property>
                                      <Property>
                                              <Name>cupertinoMaxCalulatedAudioBitrate</Name>
                                              <Value>64000</Value>
                                              <Type>Integer</Type>
                                      </Property>
                                      <Property>
                                              <Name>cupertinoBitrateAdjustmentFactor</Name>
                                              <Value>110</Value>
                                              <Type>Integer</Type>
                                      </Property>
      </Properties>
      </HTTPStreamer>
      <Repeater>
      <OriginURL></OriginURL>
      <QueryString><![CDATA[]]></QueryString>
      </Repeater> 
      <Modules>
      <Module>
      <Name>base</Name>
      <Description>Base</Description>
      <Class>com.wowza.wms.module.ModuleCore</Class>
      </Module>
      <Module>
      <Name>properties</Name>
      <Description>Properties</Description>
      <Class>com.wowza.wms.module.ModuleProperties</Class>
      </Module>
      <Module>
      <Name>logging</Name>
      <Description>Client Logging</Description>
      <Class>com.wowza.wms.module.ModuleClientLogging</Class>
      </Module>
      <Module>
      <Name>flvplayback</Name>
      <Description>FLVPlayback</Description>
      <Class>com.wowza.wms.module.ModuleFLVPlayback</Class>
      </Module>
      </Modules>
      <!-- Properties defined here will be added to the IApplication.getProperties() and IApplicationInstance.getProperties() collections -->
      <Properties>
      </Properties>
      </Application>
      </Root>
      Cheers
      Alex
    1. rrlanham -
      Are you using a smil file?

      The audio track you are using for audio rendition is double the 64kbs bitrate.

      What is the source? There are codec issues.

      Richard
    1. dArignac -
      Quote Originally Posted by rrlanham View Post
      Are you using a smil file?

      The audio track you are using for audio rendition is double the 64kbs bitrate.

      What is the source? There are codec issues.

      Richard
      Hi Richard,

      we're not using a smil file only the m3u8. Where do you see that the audio bitrate is higher than 64?
      The audio within the video streams is 64 kbps AAC - I thought Wowza automatically uses the video stream's audio stream for the audio only rendition.
      The media stream validator simulates different bandwidths and so hops between the playlists of the high, low and audio-only stream. It encounters the problems when hopping from the audio stream to the video stream back.

      EDIT:

      I found out that the audio only rendition has to include an ID3PRIV tag in the frame, this would maybe define the timestamp warning.

      Elementary Audio Stream files MUST signal the timestamp of the
      first sample in the file by prepending an ID3 PRIV tag [ID3] with
      an owner identifier of
      "com.apple.streaming.transportStreamTimestamp". The binary data
      MUST be a 33-bit MPEG-2 Program Elementary Stream timestamp
      expressed as a big-endian eight-octet number, with the upper 31
      bits set to zero.
      Source: http://tools.ietf.org/html/draft-pan...#section-6.2.4

      Alex
    1. rrlanham -
      Alex,

      Does your Wowza server have a public IP? Zip up and send conf *and* folders to ticket 11390, and send the playlist.m3u8 URL to the stream.

      Richard
    1. dArignac -
      Hi there,

      our first problem was solved, the error was on our site and had nothing to do with the wowza - I'm sorry!
      But we're encountering another problem with the audio only rendition. The settings are as described in this tutorial and our encoder sends a 64kbps audio stream but the medistreamvalidator always finds an average segment bitrate of 65.58 kbps instead of 64kbps. I played around with the cupertino settings within the HTTPStreamer but it seams that value changes there have no effect. Where does this overhead of 1.58 kbps do come from and how can I remove it? The app store will not allow audio only stream with a higher bitrate than exactly 64kbps.

      Regards,
      Alex
    1. rrlanham -
      Alex,

      Wowza is not adding overhead, and measures bitrate very accurately. Are you sure 65.58 fails?

      Richard
    1. charlie -
      This is more likely an issue on teh encoder side. It might be sending a stream that is greater than 64Kbps. I guess I might try a slightly lower bitrate.

      Charlie
    1. cdgraff -
      Hi Guys,

      Have in some place the explanation of each properties?

      Code:
      <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>cupertinoMaxCalulatedVideoBitrate</Name>
      	<Value>0</Value>
      	<Type>Integer</Type>
      </Property>
      <Property>
      	<Name>cupertinoDefaultAudioBitrate</Name>
      	<Value>64000</Value>
      	<Type>Integer</Type>
      </Property>
      <Property>
      	<Name>cupertinoMaxCalulatedAudioBitrate</Name>
      	<Value>64000</Value>
      	<Type>Integer</Type>
      </Property>
      <Property>
      	<Name>cupertinoBitrateAdjustmentFactor</Name>
      	<Value>110</Value>
      	<Type>Integer</Type>
      </Property>
      Thanks,
      Ale
    1. cdgraff -
      Hi Guys, some update about me previous post?

      I don't understand where is used this Default Params, for example my small video Bitrate is 132kbps into the properties say 250kbps I need change this? how this will be affect to the decision of the SMIL?

      And into the properties have other called cupertinoBitrateAdjustmentFactor, what is this? in where moment is used this factor?

      Thanks for any extra information, I have currently problems with the iOS speed detection the feed change very quickly to AudioOnly signal.

      Regards,
      Ale
    1. rrlanham -
      Try testing this without a smil. Just use the stream that contains the 64kbs AAC audio stream. Leave all these settings at their default. Now run the validator and be sure you have a 64kbs audio stream, and you can test the audio stream directly by playing:
      Code:
      http://[wowza-address]:1935/[app-name]/[stream-name]/playlist.m3u8?wowzaaudioonly
      Now test with this with device that you think switches too soon. If switching is about the same, then it is more likely your expectations or assumptions are wrong.

      If switching is better, more like what you expected compared to streaming with the smil, then review the system-bitrate values you are assigning, they are most likely wrong.

      Try playing each stream in the Wowza Silverlight example to see what bitrate is displayed. The Wowza sample.mp4 is 421kbs. You can play the smil and it will show you what bitrate for each of the items, and irrespevtive of system-bitrate setting. After it starts playing, stop, then check the drop down to see bitrate of each item

      Richard
    1. cdgraff -
      Richard,

      What is the reason to have this param "cupertinoDefaultVideoBitrate" at 250k? in my case the lower bitrate is 132k I need change this? I'would like to undertand when the default values are used?

      Thanks,
      Ale
    1. rrlanham -
      I'm not sure. Have you tried comparing runs in the Apple Validator with changes to that setting?

      Richard
    1. stephen -
      Hi,
      Is it ok for Wowza Media Server 2 Subscription 2.1.2 build24878 for the above issue? Other upgrade to 2.2 or greater, what can I do?
      Stephen