An I-frame ("intra-coded frame") is a fully self-contained video frame — a complete picture that can be decoded without looking at any other frame. Think of it as a regular JPEG image stuck inside a video stream. Every video file needs at least one (usually at the very start), and most have one every few seconds.
Their role is to be entry points. Without I-frames, the only way to play a video would be from the very beginning, because every other frame type (p-frame, b-frame) describes itself as a small difference from earlier frames. With I-frames sprinkled throughout, the player can jump (seek) to any I-frame and start decoding from there. That's how YouTube's scrubber works, how Netflix lets you skip the intro, how a viewer joining a live stream mid-broadcast gets a working picture within seconds.
The trade-off: I-frames are large. Coding a frame from scratch typically takes 5–10× the bits of a P-frame and 15–30× a B-frame. So putting them too often inflates the file; putting them too rarely makes seeking slow. The standard streaming compromise is one I-frame every 2 seconds (which becomes the HLS/DASH segment boundary). Live broadcast and ultra-low-latency apps push it to one per second or less. The closely related idr ("Instantaneous Decoder Refresh") is a stricter I-frame that also flushes all references — a clean random-access point that's mandatory at segment boundaries in adaptive streaming.

