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?
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.