HLS streaming - EXT-X-TARGETDURATION property not following the preset value

We are using the latest Wowza Streaming Engine 4.0.3 to stream live training classes to RTMP and HLS clients.

Due to the low movement in the session and low bandwidth requirements from our client we are using a 15 frames per second H.265 compression with 90 key-frames interval, which translates to 6 seconds.

I configured the HLS segmenter - cupertinoChunkDurationTarget property to create 12 seconds segments, with a playlist of 3 segments.

(I tried segments of 6 seconds with 5 segments in the playlist but we got a lot of dropping from IPad tablets)

The m3u8 playlist shows a EXT-X-TARGETDURATION value of 17 seconds, though.

#EXTM3U

#EXT-X-VERSION:3

#EXT-X-ALLOW-CACHE:NO

#EXT-X-TARGETDURATION:17

#EXT-X-MEDIA-SEQUENCE:489

#EXTINF:12.0,

media_w1364494733_489.ts

#EXTINF:12.0,

media_w1364494733_490.ts

#EXTINF:12.0,

media_w1364494733_491.ts

with all the segments being 12 seconds in length.

We are using JWplayer to play the HLS stream on the Ipad

I timed the refresh interval of an Ipad and is at 17 seconds, which it in line with

#EXT-X-TARGETDURATION:17 value.

On a low speed connection we still experience stream dropping (our stream is only 450 kbps), and sometimes the browser crashes and the user has to log in again to continue watching.

I assume the buffer gets emptied before a new segment is retrieved and the player crashes.

Any suggestions to improve the stability of the stream in this case? Thanks’

Try smaller cupertinoChunkDurationTarget. You can set it to 6000 with your encoder settings, but I think it would be better to set the encoder key frame interval to 30 (leaving fps at 15). Then you can set cupertinoChunkDurationTarget as low as 2000, each chunk will be 2 seconds, which 1/6 the size of your 12 second chunks. That should be more manageable for low bandwidth clients.

Richard