HTTP Live Streaming (m3u8) I-Frames location

http-live-streaming, iframe, m3u8

Solution

It is recommended the the first frame in the TS be an I-frame, however it is not required. If a segment doesn't start with a iframe, it will play fine assuming it has already downloaded and played the previous segment. This may not be true however, if your user jumps into the middle of a live stream, switches bitrates, or seeks within a VOD. In the case of a play or seek event, the player can download the previous segment (if available) and look for an I frame, or drop frames until the first iframe is found. If it is a multibitrate stream it can continue to play the old stream until a keyframe in the new stream is found. But this increases bandwidth usage, and will almost certainly result in buffering.

The #EXT-X-I-FRAMES-ONLY playlist can be used for preview images while scrubbing through the content.

Problem

What is the recommend location of the I-Frames within an HTTP Live Streaming session? I know that, if I were to use the #EXT-X-I-FRAMES-ONLY tag, then every segment contains exactly 1 I-Frame at the very beginning of the segment. But what if I am not using this tag? What if I strictly create segments based on length of time? If a segment doesn't start with an I-Frame, do players typically assume they should calculate the images based on the last I-Frame from the previous segment? If so, then why would I even create a #EXT-X-I-FRAMES-ONLY playlist?

Original source