Short answer: a keyframe interval defines the maximum planned spacing between keyframes
A keyframe interval tells an encoder how often to place a frame that can be decoded without depending on earlier predicted frames. The keyframe and the dependent frames that follow it form a group of pictures, or GOP. Some controls express the interval in seconds; others use a frame count or expose separate GOP and forced-keyframe fields.
Start with the receiving destination's current requirement, then translate it into the units used by the selected encoder. A two-second requirement at a constant 30 frames per second is 60 frames when the control expects frames. That is a translation example, not a universal recommendation: the destination, codec, encoder, segmenter, and playback profile still decide the accepted value.
Collect the requirements before changing the encoder
- The destination's current codec, frame-rate, keyframe, rate-control, and audio requirements.
- The exact output frame rate. Record whether it is constant or can vary under load.
- The encoder name and version, plus whether its interval control uses seconds, frames, or an encoder-specific GOP field.
- A receiver, player, or probe that reports actual frame types and timestamps from the delivered output.
- A short test window in which a rejected profile, higher bitrate, or encoder restart will not affect a live programme.
If the destination does not publish a keyframe requirement, do not invent one from a generic streaming preset. Establish a candidate with the destination owner and validate it on the real delivery path.
Configure one measured profile
- Write down the receiving contract. Keep the destination's interval, codec, profile, frame rate, bitrate mode, and any segment-duration requirement together. A local encoder setting is not proof that the receiver accepts the stream.
- Capture the current baseline. Export or record the working profile before changing it. Note the observed keyframe spacing, receiver status, bitrate, dropped frames, and CPU or hardware-encoder load.
- Translate the interval into the encoder's units. For a destination that explicitly asks for two seconds, a constant 30 fps profile maps to 60 frames; 60 fps maps to 120 frames. Do not apply this calculation when the control already expects seconds.
- Change only the reviewed keyframe control. In OBS, use the Keyframe Interval field for the chosen streaming encoder. In a reviewed Callaba transcode profile, confirm the deployed meanings of the GOP and forced-keyframe fields before saving them. Leave scene-cut, open/closed GOP, B-frame, and rate-control options unchanged unless the receiving contract also specifies them.
- Run the busiest representative scene. Motion, graphics, camera cuts, and encoder load can expose behavior that a static preview hides. Keep the test long enough to observe repeated keyframe intervals and at least one normal reconnect.
Expected result: the delivered stream stays within the destination's stated keyframe tolerance, the receiver remains accepted, and observed keyframes recur at the configured cadence without unexpected long gaps.
Verify the output, not the form value
Inspect the received stream with a frame-aware probe or the destination's diagnostics. Confirm the output frame rate, identify successive keyframes, and calculate their timestamp difference. For the example 30 fps profile with a destination-requested two-second interval, the observed spacing should be close to two seconds and approximately 60 frames, subject to the encoder's documented behavior.
For segmented delivery, inspect several segment boundaries as a separate check. RFC 8216 advises HLS servers to divide media at points that support effective independent decoding, such as keyframe boundaries. Matching a GOP field does not prove that every segment starts correctly, that every rendition is aligned, or that the player can switch renditions cleanly.
- Receiver status remains healthy and does not report a keyframe-interval violation.
- Video and audio continue through normal motion, a scene change, and a reconnect.
- Bitrate and encoder load remain inside the tested capacity envelope.
- If several renditions exist, their keyframes and segment boundaries are checked together rather than inferred from one rendition.
When the interval looks right but the stream still fails
| Symptom | Likely check | Next action |
|---|---|---|
| The destination rejects the stream | The encoder used frames while the requirement used seconds, or another codec/profile rule is wrong. | Compare the delivered stream with the complete destination contract; restore the baseline before changing another field. |
| Observed gaps are longer than configured | Variable frame rate, scene-cut behavior, overload, or an encoder-specific maximum-GOP interpretation. | Confirm actual timestamps and the exact encoder documentation; test with stable frame rate and measured headroom. |
| A rendition switch stalls or starts with corrupt frames | Rendition keyframes or package boundaries are not aligned. | Inspect every rendition and segment boundary; correct the ladder as one packaging profile. |
| Bitrate rises after a shorter interval | More frequent intra frames changed compression efficiency. | Re-run quality, bitrate, and capacity checks instead of treating the interval as a latency-only setting. |
What a keyframe interval does not guarantee
A shorter interval does not by itself guarantee lower glass-to-glass latency, faster failure recovery, clean adaptive-bitrate switching, or compatibility with every service. Encoder buffering, B-frames, rate control, transport, segment duration, origin behavior, CDN caching, and player buffering remain separate parts of the path.
GOP length also does not describe whether the GOP is open or closed, whether an encoder inserts additional scene-cut keyframes, or whether a forced frame is an IDR frame with the properties the next system expects. Keep those claims tied to the exact encoder and destination documentation.
Sources and related Callaba owners
- OBS: Transcodes and transcoding — destination requirements and consistent keyframe intervals.
- FFmpeg codec documentation — encoder GOP-size controls and encoder-specific options.
- RFC 8216: HTTP Live Streaming — playlist, segment, and keyframe-boundary behavior.
- Callaba Live Video Transcoding — the product owner for reviewed live processing controls.
- Live-transcoding API workflow — current request fields and operational API boundary.
- Video encoding guide — the broader source-to-encoded-stream decision.
Next steps
Save the working profile, the destination requirement, and a short verification record together. If Callaba is performing the transcode, confirm the exact input and output combination in a test deployment before moving the profile into production.