Problem restreaming Axis IP camera to iOS - mediastreamvalidator errors

Hi,

I generally have no issues with live streaming Axis IP cameras through Wowza over RTSP and playing the stream on the desktop (RTMP), in Android (HLS) and iOS (HLS). Unfortunately, I have encountered issues lately streaming some of these cameras to iOS. The live stream sometimes plays on iOS, but then stops with an error. Sometimes the streams do not start at all. I also experience similar playback issues playing the HLS stream in VLC. Android seems to have no issue playing the streams.

The only potential issue I’ve been able to identify is that some #EXTINF entries in the chunklist file are small negative numbers, for example: #EXTINF:-0.067,

Wowza version: WowzaMediaServer -> /usr/local/WowzaMediaServer-3.5.2

conf/rtp/Application.xml:

...
                <LiveStreamPacketizer>
                        <Properties>
                                <Property>
                                        <Name>cupertinoChunkDurationTarget</Name>
                                        <Value>2000</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>
                        </Properties>
                </LiveStreamPacketizer>
...

Example playlist.m3u8:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=144122,CODECS="avc1.77.30",RESOLUTION=640x480
chunklist.m3u8?wowzasessionid=399343192

Example chunklist.m3u8:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:6
#EXTINF:4.067,
media_6.ts?wowzasessionid=1520963831
#EXTINF:-0.067,
media_7.ts?wowzasessionid=1520963831
#EXTINF:4.066,
media_8.ts?wowzasessionid=1520963831

Apple Media Validator Tool Output:

$ mediastreamvalidator --timeout=15 http://<site>:1935/rtp/_definst_/<stream>/playlist.m3u8
mediastreamvalidator: Beta Version 1.1(130423)
Validating http://<site>:1935/rtp/_definst_/<stream>/playlist.m3u8
Validating child playlist chunklist.m3u8?wowzasessionid=2025878337 [116.91 kbits/sec]
Segment processing interrupted: chunklist.m3u8?wowzasessionid=2025878337 - 8 out of 8 segments processed...
--------------------------------------------------------------------------------
http://<site>:1935/rtp/_definst_/<stream>/playlist.m3u8
--------------------------------------------------------------------------------
Playlist Syntax: 	OK
Alternate playlist(s):
--------------------------------------------------------------------------------
chunklist.m3u8?wowzasessionid=2025878337
--------------------------------------------------------------------------------
Playlist Syntax: 
	Error: (-12646:-12264) Negative number in EXTINF
	--> #EXTINF:-0.066,
	Warning: (0:-12264) extra characters at end of line
	--> #EXTINF:-0.066,
	Error: (-12646:-12264) Negative number in EXTINF
	--> #EXTINF:-0.066,
	Warning: (0:-12264) extra characters at end of line
	--> #EXTINF:-0.066,
	Error: (-12646:-12264) Negative number in EXTINF
	--> #EXTINF:-0.066,
	Warning: (0:-12264) extra characters at end of line
	--> #EXTINF:-0.066,
Segments:	OK
Average segment duration: 0.70 seconds
Playlist target bitrate: 116.91 kbits/sec
Segment bitrate: Average: 65.05 kbits/sec, Max: 104.68 kbits/sec

Any ideas?

Thanks,

Dan

Dan,

We have seen this before. It indicates that the timecodes are jumping around.

What version of Wowza are you using? Recent changes might help to recover better, though probably not fix this exactly as it is a problem with the source.

Try applying the latest production build patch, and for good measure the latest 3.6.3 patch over that

Richard

Dan,

When I say source I mean the camera and the network in between. If the network is the problem you might try a lower bitrate for these cameras.

Richard

Thanks for the quick response. We are currently using Wowza 3.5.2. I will explore upgrading to 3.6.3+patch.

Can you provide more detail about the source/encoder problem that leads to timecodes jumping around? The source is an Axis camera, and I can modify several encoder settings using their RTSP API - maybe that would help? I can also open a support request with Axis, but I’m unsure what detail to put in.

Thanks,

Dan