TS duration does not match cupertinoChunkDurationTarget on HLS

Hi, I am new to here and just started using WOWZA Media Server. My aim is to stream a live stream from Adobe Live Encoder to Wowza Media Server and display on the iPad with the lowest latency possible.

My settings are as follow:

Adobe Live Encoder 3.1 / 3.2 (tried both)

Video Format: H.264

Profile: Baseline

Keyframe Frequency: 1 second

WOWZA media server 3.5.2

cupertinoChunkDurationTarget: 1000ms

cupertinoMaxChunkCount: 10

cupertinoPlaylistChunkCount: 2

cupertinoRepeaterChunkCount: 1

I have looked at other posts here and the settings above should be all I need for a low latency HLS.

However the problem is when I tried to view the m3u8 file and each TS duration.

I found out that the m3u8 gives me this:

#EXTINF:1.167,

media_44753.ts

#EXTINF:1.208,

media_44754.ts

where #EXTINF should be the duration of each TS file which should be exactly 1 second, rather than this with remainders.

for a while I thought it’s just the floating number problem, but after I changed the #EXT-X-VERSION floating number settings, the TS file that I downloaded is still with remainders!!

I took a while to test it and I found the problem might be on the FMLE.

With my webcam when I set it to 15fps, it gives a duration with remainders and non-consistent between files.

with a settings of 14.98fps, I managed to get all files the same duration, 984ms, but still not quite 1 second exactly.

So here is my questions:

  1. is it really FMLE’s problem?

  2. can anyone tell me why the change in fps will cause the duration of ts file to be different?

  3. what should the best settings of FMLE be so that wowza media server can produce chunks that are equal length?

  4. is there any settings I can configure on wowza media server that can cut the video stream into equal length?

Wowza has to break on key frames. In my test with FMLE 3.2, h.264, fps 15, key frame frequency 1 second and cupertinoChunkDurationTarget 1000, I see this:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:43
#EXTINF:1.008,
media_43.ts?wowzasessionid=591794236
#EXTINF:0.992,
media_44.ts?wowzasessionid=591794236
#EXTINF:1.008,
media_45.ts?wowzasessionid=591794236

Richard

The encoder would have to produce streams with key frames that are exactly 1 second apart. I was just reporting what settings I used. I tried a few other settings and do not get even 1 second chunk with FMLE.

Richard

Thank you for the reply!

It’s exactly what I see as well! But I don’t see how a change in fps will affect the duration of .ts file? Suppose FMLE has key frame frequency of 1 second and cupertinoChunkDurationTarget 1000, the output of the .ts file should be 1 second exactly.

When I look at other people’s post with their m3u8, as well as the HLS that is out there, their .ts durations are all the same!

Can you suggest a way to output an exactly 1000 millisecond chunks?

==========================================================================================

Here are some more info. on the chunks I extract from WOWZA IDE:

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mystream]: Add chunk: id:1 mode:TS[H264,NOAUDIO] a/v/k:0/30/1 duration:1190

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mystream]: Add chunk: id:2 mode:TS[H264,NOAUDIO] a/v/k:0/30/1 duration:1009

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mystream]: Add chunk: id:3 mode:TS[H264,NOAUDIO] a/v/k:0/30/1 duration:992

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mystream]: Add chunk: id:4 mode:TS[H264,NOAUDIO] a/v/k:0/30/1 duration:1008

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mystream]: Add chunk: id:5 mode:TS[H264,NOAUDIO] a/v/k:0/30/1 duration:992

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mystream]: Add chunk: id:6 mode:TS[H264,NOAUDIO] a/v/k:0/30/1 duration:992

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mystream]: Add chunk: id:7 mode:TS[H264,NOAUDIO] a/v/k:0/30/1 duration:1008

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mystream]: Add chunk: id:8 mode:TS[H264,NOAUDIO] a/v/k:0/30/1 duration:992