guides
Quickstart: push a feed to TRaX with OBS or ffmpeg
Ten minutes from credentials to a live feed. You need three things from your TRaX provisioning (see Getting started — access is operator-provisioned today):
- The media host (
<trax-media-host>below) - Your input path, e.g.
inputs/srt-3f2a…(see Stream paths) - A credential — a session JWT or a stream key (see Authentication)
Option A — SRT (recommended)
ffmpeg
ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -b:v 4M \
-c:a aac -b:a 160k -f mpegts \
"srt://<trax-media-host>:8890?streamid=publish:<path>:trax:<jwt>"
With a stream key, the streamid is publish:<path>:<key>:<key> instead.
OBS
- Settings → Stream → Service: Custom…
- Server:
srt://<trax-media-host>:8890?streamid=publish:<path>:trax:<jwt> - Stream Key: leave empty (everything rides in the streamid)
Do not URL-encode the streamid, and keep it under 512 bytes — see the SRT contract for the failure modes.
Option B — RTMP
ffmpeg
ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -b:v 4M \
-c:a aac -b:a 160k -f flv \
"rtmp://trax:<jwt>@<trax-media-host>:1935/<path>"
OBS
- Settings → Stream → Service: Custom…
- Server:
rtmp://trax:<jwt>@<trax-media-host>:1935/<path> - Stream Key: leave empty
Credentials ride in the URL userinfo — not in a /live/<key> path. See the
RTMP contract.
Verify it's flowing
Pull your own feed back with WHEP (reference) or ask the studio operator to confirm the input tile went live. A healthy SRT contribution holds a stable round-trip and no reconnect churn; if the sender dies within the first second, check the streamid rules first.
Recommended encoder settings
| Setting | Value |
|---|---|
| Video codec | H.264, high profile |
| Keyframe interval | 2 s |
| Rate control | CBR, 4–8 Mbps for 1080p60 |
| Audio | AAC 160 kbps, 48 kHz stereo |