Skip to content
Callaba

H.264 Codec Settings: Build a Stream Decoders Can Trust

On this page

H.264 works almost everywhere, but two H.264 streams can still behave very differently. The receiver also has to understand the profile, level, picture structure, bitrate, audio and the transport wrapped around the video.

NetworkSRT, RTMP, RTSP or RTPconnection, recovery and access
ContainerMPEG-TS, FLV or MP4video, audio and timestamps together
VideoH.264 / AVCprofile, level, GOP and rate control
AudioAAC or another supported codecchannels, sample rate and sync

Use the source directly until a receiver gives you a reason not to

Callaba receives H.264 inside SRT, RTMP and RTSP, as well as NDI HX sources that use H.264. Full-bandwidth NDI and other NDI modes have their own media formats. If Multiview, Recording and the destination can use the source directly, keep the original video.

If the next system requires another codec, resolution or frame rate, create a separate transcoding output and verify that result on its own. The input remains available to the jobs that do not need conversion.

H.264 is the video, not the whole stream

H.264, also called AVC, describes compressed video. It does not identify the network transport, container, audio codec or access method. The same H.264 elementary stream can be packetized for RTP, carried in MPEG-TS, stored in MP4 or delivered through RTMP, and each surrounding layer can fail independently.

RFC 6184 describes how H.264 Network Abstraction Layer units travel in RTP, including single units, aggregation packets and fragmentation units. A browser file, an RTMP contribution and an SRT-carried MPEG-TS programme may all contain H.264 while needing different demuxers and receiver settings.

Start with what the receiver actually accepts

Live destination

A service may prescribe codec, keyframe interval, bitrate mode, audio codec and rate ranges. YouTube Live’s current RTMP/RTMPS guidance accepts H.264, recommends CBR and a two-second keyframe interval, and varies bitrate guidance by resolution and frame rate.

Playback or archive

A file or player may care about MP4 fast start, chroma subsampling, progressive scan, supported profile and the exact audio track. YouTube’s upload guidance, for example, recommends H.264 High Profile, progressive scan, a closed GOP and 4:2:0 chroma in MP4.

These are examples, not a universal preset. Keep the actual receiver requirements beside the encoder configuration. If the same programme must reach two incompatible receivers, create separate outputs or transcode at a controlled point instead of choosing a fragile compromise.

Profile, level and GOP answer different questions

Profile
Which coding tools the bitstream may use. A richer profile can improve compression, but only when the decoder supports it.
Level
Limits combinations such as picture size, frame rate and decoder workload. It is a capability limit, not a quality slider.
GOP
The pattern between independently decodable pictures. Keyframe cadence affects join time, seeking, recovery and destination compliance.
Rate control
CBR, VBR and capped modes shape how bits are spent. The destination and network budget decide which behavior is suitable.
Reference frames
Additional prediction can improve efficiency and increase decoder work. Stay within the receiver’s documented range.
Colour and scan
Bit depth, colour space, range and progressive or interlaced structure can make a decoded picture visibly wrong.

Find the first place the stream stops making sense

The encoder misses time

Frames are late before transmission. Reduce the encoding workload or use a suitable hardware path; a player cannot recover pictures that were never encoded on time.

The transport loses continuity

The codec is valid, but packets, timestamps or muxing reach the receiver badly. Inspect transport health and demux evidence before rebuilding the H.264 settings.

The receiver rejects media

Packets arrive, but profile, level, GOP, audio or container falls outside the accepted format. Preserve the exact error and compare it with a known-good sample.

Buffering alone does not prove that H.264 is too demanding. The cause may be an uplink below the chosen rate, an output ladder above the viewer’s connection, stale segmented media or a player problem. Put encoder timing, transport statistics and receiver messages on the same timeline.

Keep one known-good sample

Save a short recording from a stream that the receiver accepted. Include motion, fine detail, silence and real audio rather than a static colour bar alone. Record encoder version, profile, level, resolution, frame rate, GOP, bitrate mode, target rate, audio format, container and the destination used for the test.

Use the sample for comparison, not as a permanent preset. After an encoder, platform or workflow change, run both the old and new samples through the same receiving path. The field-level difference is more useful than “H.264 stopped working.”

Primary references: IETF RFC 6184: RTP Payload Format for H.264 Video, YouTube Live encoder settings, and YouTube upload encoding settings.