- Home
- How to Ingest SRT HEVC (H.265) and Transcode to RTMP
How to Ingest SRT HEVC (H.265) and Transcode to RTMP
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 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.
On this page
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.
| Layer | Decision you own | Evidence to keep | What it does not prove |
|---|---|---|---|
| SRT transport | Caller/listener direction, UDP port, latency, passphrase, Stream ID, access rule, bandwidth headroom | Connected peer, live bitrate, RTT, packet-loss counters, connection duration, and current/volatile connection events | Codec, picture quality, audio mapping, destination acceptance |
| MPEG-TS payload | Programme, video and audio streams, timestamps, continuity | A probe or receiver can identify and decode the expected streams | That an unrelated player or platform accepts those streams |
| HEVC/H.265 video | Profile, level, bit depth, pixel format, resolution, frame rate, bitrate and GOP | Encoder status plus an independent media probe | Browser compatibility or RTMP compatibility by itself |
| RTMP output | Destination URL/key, accepted codecs, audio, rate limits and event state | Restream bitrate/fps plus the destination’s ingest health and real preview | That 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.
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.
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.
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
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.
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.
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.
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 stepsffprobe -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.
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.
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.
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
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.
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.
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
| Symptom | First useful checks | What to change |
|---|---|---|
| The publisher never connects | UDP firewall/public address, Callaba listener state, port, mode, passphrase, Stream ID, publisher role | Correct the single mismatched transport or access value. Do not enable unrestricted access as a shortcut. |
| Connected, but input bitrate is zero | Encoder output state, selected programme, MPEG-TS mux, destination address, local encoder errors | Repair the encoder output before changing latency or starting Restreaming. |
| Bitrate exists, but there is no picture | Probe codec/profile/bit depth, MPEG-TS programme mapping, decoder support, timestamps, audio/video presence | Choose 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 offline | Destination URL/key, event state, H.264/audio compatibility, bitrate/GOP limits, output bitrate | Repair the destination contract while leaving the verified SRT input unchanged. |
| Output freezes or host load spikes | Decode/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 provides | Remove unnecessary processing or reduce the profile to measured capacity. Scale the deployment if production requires the original target. |
| Picture works, audio is missing or wrong | Input programme and track, codec, sample rate, channels, selected output track, destination audio rules | Map 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
- Haivision SRT project: protocol purpose, content-agnostic payload, recovery, and encryption
- Haivision SRT live-transmit guide: caller/listener modes, MPEG-TS testing, RTT, latency, and firewall considerations
- Haivision SRT socket options: negotiated receiver latency and peer latency
- ITU-T Recommendation H.222.0: MPEG transport-stream systems
- ITU-T Recommendation H.265: High efficiency video coding
- FFprobe documentation: inspect container and media-stream information
- FFmpeg protocol documentation: SRT URL syntax and socket options
- Callaba user guide: SRT Servers, Streams and connection access, and Re-streaming and transcoding
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.


