Callaba

How to Ingest SRT HEVC (H.265) and Transcode to RTMP

Oct 11, 2022

This runbook receives an MPEG-TS contribution carrying HEVC/H.265 over SRT, proves that the transport and payload are usable, then creates a separate Callaba Restream job for an RTMP destination. The important discipline is to validate each boundary in order: SRT connection, incoming media, transcoder output, and destination playback.

Quick answer: how do I send SRT HEVC to an RTMP destination?

Create a Callaba SRT Server as the listener and give the encoder publisher-only access. Configure the encoder as the SRT caller with an MPEG-TS payload containing HEVC video. Once Callaba shows a stable session and non-zero bitrate, confirm the actual video codec and audio streams with a compatible receiver or probe. Then create one Restream job from that verified SRT source to the RTMP URL, enable only the H.264/audio transcoding required by the destination, and check both Callaba runtime statistics and the destination preview.

The codec changes only inside the processing stage

The animated labels separate what travels over SRT from what the RTMP receiver is expected to ingest. A healthy connection at one stage does not certify the next one.

Treat SRT, MPEG-TS, HEVC, and RTMP as four separate contracts

SRT is a transport. The SRT project describes it as content agnostic: it can carry continuous media such as MPEG-TS, but it does not turn one codec into another. H.265, also called HEVC, is the video bitstream format standardized by ITU-T. MPEG-TS packages the video, audio, timing, and programme information for transport. RTMP is the next delivery interface in this particular workflow.

Keeping those layers separate prevents the most common false conclusion in this setup: “SRT connected, therefore the video is valid.” An SRT handshake proves that two transport endpoints agreed well enough to establish a session. It does not prove that the incoming programme contains HEVC, that the audio is present, that Callaba can decode the exact profile on the available host, or that the RTMP service will accept the output profile.

What to configure and prove at each boundary
LayerDecision you ownEvidence to keepWhat it does not prove
SRT transportCaller/listener direction, UDP port, latency, passphrase, Stream ID, access rule, bandwidth headroomConnected peer, live bitrate, RTT, packet-loss counters, connection duration, and current/volatile connection eventsCodec, picture quality, audio mapping, destination acceptance
MPEG-TS payloadProgramme, video and audio streams, timestamps, continuityA probe or receiver can identify and decode the expected streamsThat an unrelated player or platform accepts those streams
HEVC/H.265 videoProfile, level, bit depth, pixel format, resolution, frame rate, bitrate and GOPEncoder status plus an independent media probeBrowser compatibility or RTMP compatibility by itself
RTMP outputDestination URL/key, accepted codecs, audio, rate limits and event stateRestream bitrate/fps plus the destination’s ingest health and real previewThat the upstream SRT path will recover from a real network failure

Collect the receiver contract before touching the transcoder

Start with the RTMP destination, not with a generic preset. Record its current accepted video codec, audio codec, resolution, frame rate, bitrate range, keyframe interval, rate-control expectations, URL format, stream key, and whether an event must be opened before the encoder connects. These values belong to the destination and can change; do not copy a profile from an unrelated platform.

Contribution

Write down the SRT side

Reserve one reachable UDP port. Decide that Callaba listens and the encoder calls unless the real network requires another arrangement. Record the Stream ID, passphrase, measured RTT, expected peak bitrate, and the public address the encoder will use.

Payload

Describe the actual programme

Record MPEG-TS, HEVC profile and bit depth, resolution, frame rate, approximate bitrate, GOP, audio codec, sample rate, channels, and programme/track mapping. “H.265 feed” is not enough information to reproduce a working path.

Capacity

Budget for decode and encode

Transcoding consumes much more CPU or accelerator capacity than a transport-preserving route. Test the complete profile on the same Callaba deployment class that will run production, with representative motion and audio.

Build and prove the workflow in Callaba

  1. Create one controlled SRT ingest point

    Open SRT Servers, add a server with a clear operational name, and use an unused UDP listener port. Set latency and maximum-bandwidth headroom from the measured path rather than from a copied “low latency” number. Add a passphrase when encryption is required. Keep the firewall limited to the required source addresses when the network design allows it.

    Create explicit publisher access in Streams instead of opening the whole server to unknown clients. Choose SRT, select the server, assign the Publisher role, and set the intended Stream ID or allowed host. Start the server before the encoder begins calling. This gives the contribution feed its own identity and keeps receiver permission separate.

  2. Make the encoder the SRT caller

    Configure the encoder to send MPEG-TS over SRT to the publisher connection details issued for this server. Match the UDP port, complementary caller/listener roles, passphrase, and Stream ID exactly. Coordinate latency settings and verify the effective negotiated latency. Enable HEVC/H.265 video and save the complete encoder profile in the event runbook.

    Start with one source and one programme. Do not add a backup, second destination, overlay, or resize while basic ingest is unknown. If the encoder offers several HEVC profiles or 8-bit/10-bit choices, select the one that has been tested with the next processing stage; the codec name alone is not a compatibility result.

  3. Prove SRT health before creating an output

    In the SRT Server operator view, confirm that the expected publisher is connected and live bitrate is non-zero. Compare incoming bitrate with the encoder’s configured output. Watch Network RTT, packet-loss counters, connection duration, and current volatile connection events through a representative rehearsal period. Save timestamps and observations externally when the production needs durable evidence.

    If RTT or loss changes under load, fix the network or adjust the recovery budget from measurements. SRT can retransmit missing packets inside the configured latency window, but it cannot create bandwidth that the path does not have. A bitrate higher than the available upload will remain an encoder/network problem.

  4. Identify the payload independently

    Create receiver access for the verified server when an external confidence receiver is part of the test. Open the generated receiver URL in a current SRT-capable probe or player. For a command-line acceptance check, an FFprobe build with SRT and the required decoder can report the streams without changing them:

    Install steps
    ffprobe -v error \
      -show_entries stream=index,codec_type,codec_name,width,height,pix_fmt,r_frame_rate \
      -of json "PASTE_THE_CALLABA_RECEIVER_URL_HERE"

    The expected result is a video stream reported as HEVC plus the intended audio stream or streams. Also watch moving pictures and listen to programme audio in a compatible confidence receiver. FFprobe identifies the stream; it does not replace a visual and audible check for corruption, freeze, drift, or wrong track selection.

  5. Create one SRT-to-RTMP Restream job

    Open Re-streaming and create a job named for both source and destination. Select the already verified SRT Server/Stream as the input, or use the reviewed SRT URL input when that is the chosen architecture. Select Other RTMP destination, then enter the destination URL and stream key supplied by the receiver.

    Enable video transcoding only because this destination contract requires a different output. Select a destination-approved H.264 profile in the product UI and set the destination-approved resolution, frame rate, bitrate, GOP, pixel format, and rate-control values. Configure the accepted audio codec, bitrate, sample rate, channels, and track. Leave overlays and unrelated modification disabled for the first acceptance test.

    The same workflow can be created through the Restreams API, but the API does not remove the need for the source and destination checks. It automates a known working contract; it should not be used to guess one.

  6. Verify the output at both ends

    Start the Restream job and read its runtime statistics. Confirm non-zero output bitrate and the expected frame cadence. Then open the destination’s own preview or confidence return and check motion, audio, aspect ratio, colour, captions or ancillary requirements relevant to the programme.

    Compare the input and output as two distinct signals. The SRT Server should continue to show the original contribution health while the Restream job reports the processed output. This separation lets an operator see whether a failure belongs to the source, the decoder/transcoder, credentials, or the RTMP receiver.

  7. Rehearse one failure at a time

    Stop the encoder, confirm that the live Callaba operator view reflects the disconnect, and verify that the Restream output reflects source loss. Save the timestamp and recovery observation externally, then reconnect with the same authorized identity. In a separate test, use a deliberately invalid RTMP key and confirm that the source stays healthy while the destination fails. Restore the correct key, then run the planned profile under realistic motion long enough to expose thermal or capacity problems.

Read health signals as evidence, not decoration

Transport proof

Bitrate plus RTT

Live input bitrate shows that media bytes are arriving. RTT describes the round trip of the SRT path. Packet loss and current/volatile connection events help explain whether that arrival is stable. The live event timeline is not a durable audit or history store, and none of these fields identifies a valid HEVC picture by itself.

Media proof

Codec plus real programme

A probe should report HEVC video, expected dimensions, frame rate, pixel format, and audio. A confidence receiver should show moving video and clean audio. Keep both observations in the acceptance record.

Delivery proof

Output stats plus preview

Restream bitrate and fps show that the processing job is producing output. The RTMP destination must also acknowledge ingest and display the real programme. A running process with rejected credentials is not a successful delivery.

Troubleshoot the first boundary that fails

Find the first failed boundary before changing the workflow
SymptomFirst useful checksWhat to change
The publisher never connectsUDP firewall/public address, Callaba listener state, port, mode, passphrase, Stream ID, publisher roleCorrect the single mismatched transport or access value. Do not enable unrestricted access as a shortcut.
Connected, but input bitrate is zeroEncoder output state, selected programme, MPEG-TS mux, destination address, local encoder errorsRepair the encoder output before changing latency or starting Restreaming.
Bitrate exists, but there is no pictureProbe codec/profile/bit depth, MPEG-TS programme mapping, decoder support, timestamps, audio/video presenceChoose a tested HEVC profile or repair the source mux. More SRT latency will not make an unsupported codec decode.
The Restream job runs, but RTMP is offlineDestination URL/key, event state, H.264/audio compatibility, bitrate/GOP limits, output bitrateRepair the destination contract while leaving the verified SRT input unchanged.
Output freezes or host load spikesDecode/encode capacity, resize and frame-rate filters, profile complexity, concurrent jobs, Callaba host CPU/memory telemetry and, separately, any infrastructure-level accelerator telemetry your deployment providesRemove unnecessary processing or reduce the profile to measured capacity. Scale the deployment if production requires the original target.
Picture works, audio is missing or wrongInput programme and track, codec, sample rate, channels, selected output track, destination audio rulesMap and transcode the intended audio explicitly, then repeat an audible confidence check.

Production acceptance checklist

  • The Callaba SRT Server owns a documented UDP port, access policy, publisher identity, and strong passphrase where required.
  • The encoder is the intended caller and sends MPEG-TS with the recorded HEVC profile, bit depth, resolution, frame rate, bitrate, GOP, and audio format.
  • Input bitrate, RTT, packet-loss behaviour, connection duration, and current connection state are acceptable on the real network; required timestamps and observations are stored externally.
  • A compatible receiver or probe identifies HEVC and the expected audio; moving video and programme audio have been watched and heard.
  • The Restream job uses one verified source and one named RTMP destination.
  • H.264, audio, resolution, bitrate, frame rate, and GOP match the destination’s current published or supplied requirements.
  • Callaba reports output bitrate/fps and the destination reports healthy ingest.
  • A real destination preview has been checked for motion, audio, framing, colour, and timing.
  • Input reconnect and destination rejection were tested separately, with observed recovery and escalation notes saved.
  • Production host capacity was measured with the final profile and expected concurrent workloads.

Questions operators usually ask

Does SRT require H.264?

No. SRT transports data and is content agnostic. A common live payload is MPEG-TS, which can carry HEVC/H.265. The sender, receiver, probe, and any processing stage still need to support the actual payload.

Does an SRT connection prove HEVC is valid?

No. It proves the transport session exists. Confirm non-zero media, inspect the programme and codec, and watch a compatible receiver before using the source in production.

Must every HEVC SRT feed be transcoded?

No. Preserve the codec when the next endpoint accepts the exact payload and processing is unnecessary. Transcode when the destination contract requires another codec, size, cadence, audio layout, or visual modification.

Why create a separate Restream job?

It isolates the destination credentials and output profile from the verified contribution feed. One failing RTMP service can then be stopped or repaired without redesigning SRT ingest.

Can I use a browser preview as the HEVC test?

Do not assume browser decoding from the codec name. Use the Callaba operator telemetry plus a receiver or probe known to support the exact stream, then validate the final browser or platform output after transcoding.

What should I automate through the API?

Automate the resource configuration and lifecycle only after the UI-built workflow is proven. Preserve the same validation gates: source health, media identity, output runtime, and destination preview.

Technical references

Prove the source once, then build the output

Use Callaba SRT Server to receive and observe the contribution feed. Add transcoding only after the HEVC payload is known, and keep each RTMP destination in its own operable Restream job.