Wowza Community

Optimal Chunk Settings for Adobe HTTP Dynamic Streaming (HDS)

I’ve read everywhere trying to figure this out, so at this point, I thought I’d ask to see if anyone else has been down this road. I’m doing exclusively live adaptive bitrate streaming of sporting events and trying to get really clean dynamic switching throughout the quality levels. I’m using Wowza to transcode the incoming stream to 6 bitrates so extremely low latency is not really a concern, since the transcoder already creates a significant element of latency.

Here’s what I know from extensive reading, starting with Wowza (https://www.wowza.com/docs/how-to-configure-adobe-hds-packetization-sanjosestreaming)

  1. Keyframe needs to be a factor of the chunk size (2/4, 3/9, etc) as a new chunk must start on a keyframe.

  2. Apple (HLS) seems to recommend 9 second segments with 3 second keyframes. These take quite a while to switch over 6-8 quality levels in practice.

  3. Adobe (HDS) can operate with smaller chunk sizes more efficiently according to all the comparisons/analysis I’ve read. This is one of the advantages of HDS for desktop Flash playback.

Adobe HDS: I’ve briefly tested using 4 second chunks with a 4 playlist chunk count and 10 chunk max. I used 2 second keyframes when encoding and transrating. It seems to work pretty well but this is an admittedly small sample of a test.

Has anyone had any experience with using HDS and manually lowering the sanjoseChunkDurationTarget (default is 10 seconds) and/or the PlaylistChunkCount and/or the sanjoseMaxChunkCount? Here are the properties in the Application.xml that you can change to for the LiveStreamPacketizer. Any help or experience would be greatly appreciated!

<Property>
    <Name>sanjoseChunkDurationTarget</Name>
    <Value>4000</Value>
    <Type>Integer</Type>
</Property>
<Property>
    <Name>sanjoseMaxChunkCount</Name>
    <Value>10</Value>
    <Type>Integer</Type>
</Property>
<Property>
    <Name>sanjosePlaylistChunkCount</Name>
    <Value>4</Value>
    <Type>Integer</Type>
</Property>
<Property>
    <Name>sanjoseRepeaterChunkCount</Name>
    <Value>4</Value>
    <Type>Integer</Type>
</Property>

By the way, I’ve read almost everything here – My Multi-bit rate Adaptive/Dynamic Streaming for Flash Video on Demand (VOD) Journey.

If you haven’t, you should. Excellent list of resources to really learn about the science (and art) behind your settings choices.

Nothing?

Got some feedback from someone I would consider an expert in the industry. Thought I’d share for others having the same questions/issues:

We’ve been sticking with 2 sec GOPs, 10 sec HLS segments, even though that’s not what Apple recommends. It give us the greatest flexibility and allows us to support multi-format output easily.

Default chunk durations we use for various formats:

HDS: 6 sec

HLS: 10 sec

Smooth: 2 sec