mediastreamvalidator cruft

Can someone tell me what I am supposed to do about these messages in the mediastreamvalidtor? The video plays fine on the iphone and everywhere else for that matter consisting of a single image video at 1fps + 44Kb audio so I am really not sure where the 201Kbps segment bitrate is coming from. My server version is

Wowza Media Server 2 Perpetual 2.1.2 build24878

ERROR: Invalid media segment: The validator helper exited due to a fatal error: failed to create format reader: [errno: -12847] format reader file not recognized.
 5:    media_1.ts?wowzasessionid=1642790267
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ERROR: Invalid media segment: The validator helper exited due to a fatal error: failed to create format reader: [errno: -12847] format reader file not recognized.
 7:    media_2.ts?wowzasessionid=1642790267
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ERROR: Invalid media segment: The validator helper exited due to a fatal error: failed to create format reader: [errno: -12847] format reader file not recognized.
 9:    media_3.ts?wowzasessionid=1642790267
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ERROR: Invalid media segment: The validator helper exited due to a fatal error: failed to create format reader: [errno: -12847] format reader file not recognized.
11:    media_4.ts?wowzasessionid=1642790267
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ERROR: Invalid response from the validator helper: a track is missing the 'type' property.
13:    media_5.ts?wowzasessionid=1642790267
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
WARNING: Media segment duration outside of expected duration by 156.000 % (2.56 vs. 1.00 seconds, limit is 20 %).
13:    media_5.ts?wowzasessionid=1642790267
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
WARNING: Media segment bitrate outside of target playlist bitrate by 214.863 % (201512 vs. 64000 bps, limit is 10 %).
13:    media_5.ts?wowzasessionid=1642790267
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Average segment duration: 2.56 seconds
Playlist target bitrate: 64.00 kbit/s
Average segment bitrate: 201.51 kbit/s (68.24 % of target)

I tried it my self and got these results:

mediastreamvalidator validate --timeout=60 http://192.168.1.22:1935/automulti/myStream/playlist.m3u8
Validating http://192.168.1.22:1935/automulti/myStream/playlist.m3u8 against iPhone OS 3.2.0
Validating child playlist http://192.168.1.22:1935/automulti/myStream/playlist.m3u8?wowzasessionid=955682088 [427.29 kbit/s]
Validating child playlist http://192.168.1.22:1935/automulti/myStream/playlist.m3u8?wowzaaudioonly&wowzasessionid=955682088 [64.00 kbit/s]
WARNING: The playlist should use relative URIs to reduce its size.
--------------------------------------------------------------------------------------------------------------
REPORT FOR CHILD PLAYLIST 'http://192.168.1.22:1935/automulti/myStream/playlist.m3u8?wowzasessionid=955682088'
--------------------------------------------------------------------------------------------------------------
Average segment duration: 10.36 seconds
Playlist target bitrate: 427.29 kbit/s
Average segment bitrate: 430.56 kbit/s (0.76 % of target)
Average segment structural overhead: 39.34 kbit/s (9.14 %)
Video codec: avc1
Video resolution: 320x240 pixels
Video frame rate: 23.97, 23.94, 24.22, 24.04 fps
Average video bitrate: 325.68 kbit/s
H.264 profile: Baseline
H.264 level: 3.0
Audio codec: aac 
Audio sample rate: 22050 Hz
Average audio bitrate: 65.54 kbit/s
-----------------------------------------------------------------------------------------------------------------------------
REPORT FOR CHILD PLAYLIST 'http://192.168.1.22:1935/automulti/myStream/playlist.m3u8?wowzaaudioonly&wowzasessionid=955682088'
-----------------------------------------------------------------------------------------------------------------------------
Average segment duration: 10.36 seconds
Playlist target bitrate: 64.00 kbit/s
Average segment bitrate: 65.51 kbit/s (2.31 % of target)
Audio codec: aac 
Audio sample rate: 22050 Hz

I used FMLE as the encoder.

I would double check to be sure you put all the properties in all the right places. Here is my Application.xml:

<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 -->
		<HTTPStreamers>sanjosestreaming,cupertinostreaming,smoothstreaming</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>digest</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>
			</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>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>
				<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>
			</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>

I would also be sure to grab the most recent validator. I am running version: 1.1.2

Charlie

Stream type should be live.

Charlie

I’m not sure about the Errors , but the Warnings mean you are not providing the required 64kbs version.

If you just have a single stream and are not doing multi-bitrate, you can satisfy the Apple requirements, if the audio track of the stream is 64kbs or less, by using this technique:

https://www.wowza.com/docs/how-to-create-apple-app-store-compliant-streams

Richard

The validator may not like the 1fps of your stream. Try increasing the frame rate to something like 24fps to see if the errors go away.

You may want to contact Apple and see if they have more information.

Charlie

Are you using the Auto generate multibitrate stream for iPhone/iPad/iPod touch w/audio-only (64K) technique?

Richard

The stream has to have a 64kbs audio track for this to work properly and satisfy Apple requirements. If the audio bitrate is higher, then I think it will still extract audio track, but it will be whatever bitrate it is

Richard

Zip up your conf and logs folders along with screen shots of all the encoder settings and post that on your web server, then send a link to support@wowza.com. Include a link back to this thread.

Richard

I don’t don’t think there is a way to do that in Wowza. The average bitrate of a file (video and audio) is

bytes on disk * 8 / length in seconds

You can get this info from FFmpeg. The output of this command breaks out audio and video bitrate:

ffmpeg -i yourvideo.mp4

Richard

After applying the patch and updating the configs I am getting the following m3u8 output

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=543051
http://myserver/content/live/mp4:myfile.mp4/playlist.m3u8?wowzasessionid=844726281
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=64000
http://myserver/content/live/mp4:myfile.mp4/playlist.m3u8?wowzaaudioonly&wowzasessionid=844726281

looks good! :slight_smile:

Then in the apple validator I get the following for the 64k stream (sample):

WARNING: INF tag with duration 2 seconds or more above the playlist's target duration (10.000 seconds).
246:    #EXTINF:16,
                ~~ 
WARNING: Media segment bitrate outside of target playlist bitrate by 840.141 % (601690 vs. 64000 bps, limit is 10 %).
  5:    media_1.ts?wowzasessionid=767856801
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Average segment duration: 14.56 seconds
Playlist target bitrate: 64.00 kbit/s
Average segment bitrate: 600.85 kbit/s (89.35 % of target)
Average segment structural overhead: 54.20 kbit/s (9.02 %)
Video codec: avc1
Video resolution: 640x360 pixels
Video frame rate: 29.97 fps
Average video bitrate: 480.11 kbit/s
H.264 profile: Baseline
H.264 level: 1.3
Audio codec: aac 
Audio sample rate: 48000 Hz
Average audio bitrate: 66.54 kbit/s

So it appears to be streaming the video as well as the audio.

For the Full video stream, the validator says:

WARNING: INF tag with duration 2 seconds or more above the playlist's target duration (10.000 seconds).
246:    #EXTINF:16,
                ~~ 
ERROR: Invalid media segment: The validator helper exited due to a fatal error: failed to parse segment as either an MPEG-2 TS or an ES: error -12971.
  5:    media_1.ts?wowzasessionid=671812796
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
WARNING: Media segment bitrate outside of target playlist bitrate by 17.988 % (640736 vs. 543051 bps, limit is 10 %).
  9:    media_3.ts?wowzasessionid=671812796
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Average segment duration: 16.64 seconds
Playlist target bitrate: 543.05 kbit/s
Average segment bitrate: 547.14 kbit/s (0.75 % of target)
Average segment structural overhead: 53.98 kbit/s (9.86 %)
Video codec: avc1
Video resolution: 640x360 pixels
Video frame rate: 29.97 fps
Average video bitrate: 426.31 kbit/s
H.264 profile: Baseline
H.264 level: 1.3
Audio codec: aac 
Audio sample rate: 48000 Hz
Average audio bitrate: 66.86 kbit/s

Any idea what I may need still to get the 64k stream to be just audio?

Yes - I followed those exact steps.

Our videos are encoded with 64kbps audio luckily but from the output of the validator it looks like video is also being output in the 64k stream.

Playlist target bitrate: 64.00 kbit/s
Average segment bitrate: 600.85 kbit/s (89.35 % of target)
...
Average audio bitrate: 66.54 kbit/s
Average video bitrate: 480.11 kbit/s

I did a diff and found that:

I have my StreamType set to default instead of live.

I do not have sanjosestreaming listed

other than that, everything is the same. Should I change those or does it matter?

After looking at the configuration closer, I have a vhost configuration where my live application is hosting from and it is set up like the example StreamType=live and all other properties as outlined are set correctly. Still no joy. I am using the 1.1.2 validator.

Could you help me for a second?

why I can’t validate the Average audio bitrate & Average video bitrate ???

Could you just do me a favor?

lzero1319@163.com