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