Connect your first SRT stream

Connect your first SRT stream

This guide commissions the primary SRT path: ingest on UDP 5000, egress on UDP 5001. Both are listener mode — your encoder calls ingest; your player or downstream calls egress.

Before you start

  • Appliance first boot has finished (/var/lib/pixop-live/instance-init.complete exists). The SSH welcome banner lists operator commands when ready.
  • AWS Marketplace: pixop-license doctor reports healthy activation.
  • KVM: license JWT installed (KVM quickstart).
  • Security groups or host firewall allow UDP 5000 from the encoder and UDP 5001 to the receiver.

1. Get connection details

On the appliance:

tsduckctl credentials

This prints private and public IPv4 (from EC2 metadata on AWS), listener ports, encryption key length, and passphrases on separate lines. Do not share passphrases in tickets.

If initialization is still running, the command waits up to 15 seconds for the completion marker.

2. Connect the SRT source

Point your encoder or ffmpeg/srt-live-transmit at the ingest URI from the credentials sheet, for example:

srt://<appliance-ip>:5000?mode=caller&passphrase=<from-credentials>&pbkeylen=16

The appliance listens; the source must be in caller mode (or equivalent).

Keep a continuous live feed running during the first minute after cold start. Restoration models load on the GPU; a clip of a few seconds may end before enhanced output appears.

3. Confirm internal flow

pixop-flow

Default sample is 2 seconds. You should see traffic at:

StageEndpoint
SRT ingest:5000
Pre-Pixop multicast239.0.0.1:5500
Post-Pixop multicast239.0.0.1:5501
Merged output239.0.0.1:5600
SRT egresssource port :5001

Exit code 3 means the backbone at :5500 is at or above TS_TARGET_BITRATE from network.env — investigate capacity or input bitrate.

Idle (no source yet) is normal; exit code 0.

4. Detect video PID

With media flowing at :5500:

tsduckctl detect-video-pid main

When the result is unambiguous, apply it:

tsduckctl detect-video-pid main --apply

This atomically updates ORIGINAL_VIDEO_PID and INPUT_PCR_PID in /etc/pixop-live/tsduck/main.env and restarts primary ingress.

Optional: tsduckctl detect-video-pid main --secs 10 (1–30) for a longer sample.

5. Tune pipeline latency

With both :5500 and :5501 flowing:

tsduckctl tune-latency main

Read-only status is SAFE when PIPELINE_LATENCY is at least the measured minimum (200–1500 ms supported). To apply the recommendation:

tsduckctl tune-latency main --apply

6. Connect the SRT receiver

Use the egress URI from tsduckctl credentials, for example:

srt://<appliance-ip>:5001?mode=caller&passphrase=<from-credentials>&pbkeylen=32

An early egress connection may fail once while the listener restarts; retry.

7. Verify output

  • pixop-flow again — egress :5001 should show payload Mbps.
  • pixopctl health or curl -sS http://<ip>:8080/v1/metrics — frame counters after input is seen.
  • Optional: pixopctl logs and /var/log/pixop-live/live.log for Pixop diagnostics.

Control UI

Open http://<appliance-ip>:8080 from a host allowed by your management CIDR. Picture-processing settings persist in /var/lib/pixop-live/parameters/params.json and override matching CLI defaults at startup.

Encoded output format (resolution, chroma, HDR signalling, bitrate) is edited in /etc/pixop-live/nvencc.args; restart Pixop only:

pixopctl restart

SRT ingest and egress stay up during pixopctl restart.

Optional secondary paths

UDP 5002 and 5003 map to optional egress instances. They are disabled by default. Enable explicitly:

pixop-stack enable --all

Configure passphrases in the corresponding /etc/pixop-live/tsduck/*.env files before starting.

Commissioning checklist

tsduckctl credentials
    ↓
SRT source → :5000
    ↓
pixop-flow
    ↓
tsduckctl detect-video-pid main --apply
    ↓
tsduckctl tune-latency main --apply
    ↓
SRT receiver → :5001
    ↓
pixop-flow + metrics

Related


Did this page help you?