MPEG-TS output settings¶
All MPEG-TS outputs of a stream — HTTP playback, SRT, pushes over UDP, SRT, and RIST — come from a single multiplexer. The mpegts section of a stream configures its service tables: the program number, track PIDs, and the SDT service description. The same section on an individual output channel overrides those values for that channel only: different receivers get the same stream under different program numbers and PIDs.
The stream mpegts section¶
streams:
- name: tv1
inputs:
- udp: {host: 239.0.0.1, port: 5000}
mpegts:
pnr: 1030
pmt_pid: 1000
service_name: TV One
provider_name: Example Media
pids:
v1: 1011
a1: 1012
Every parameter is optional; an unset field means the server default:
| Parameter | What it sets | Default |
|---|---|---|
pnr |
program number: the PAT entry, PMT program_number, and SDT service_id |
1 |
pmt_pid |
PID of the PMT table | assigned automatically |
pids |
explicit track PIDs by track name: v1, a1, … |
assigned automatically |
service_name |
service name in the SDT | the stream name |
provider_name |
provider name in the SDT | empty string |
ts_stream_id |
transport_stream_id in the PAT and the SDT header |
1 |
onid |
original_network_id in the SDT header |
1 |
Rules checked when the configuration is saved:
- PIDs must be within 32–8190; lower values are reserved for service tables, higher ones for null packets;
- duplicate PIDs within the section are rejected, including a track PID equal to
pmt_pid; pnris never zero — program number zero in the PAT is reserved for the NIT;- service and provider names together are limited so that the SDT fits into a single TS packet.
A pids entry for a track the stream does not currently have is valid: it takes effect when the track appears. If an explicitly configured PID conflicts with an automatically assigned PID of another track, the explicit value wins and the displaced track deterministically moves to a free PID — with a warning in the log.
SDT¶
Along with the PAT and PMT, the output carries an SDT table (PID 0x11): a single service of the digital television type, service_id equal to pnr, with the service and provider names from the mpegts section. Strings are encoded per DVB: Latin text goes as is, everything else as UTF-8 with an encoding announcement, so non-Latin names are read correctly by receivers.
When the settings change, the versions of the affected PAT/PMT/SDT tables increment, and receivers pick up the new tables the standard way. Editing the mpegts section applies on the fly: pushes and connected clients do not reconnect.
Per-channel settings¶
The same mpegts section is accepted by individual output channels:
- a push over UDP, SRT, or RIST — RTMP has no MPEG-TS, so the section does not combine with the
rtmptransport; srt_play— SRT playback from the stream's dedicated port.
streams:
- name: tv1
inputs:
- udp: {host: 239.0.0.1, port: 5000}
mpegts:
pnr: 1030
service_name: TV One
srt_play:
port: 4010
mpegts:
pnr: 200
pushes:
local-multicast:
udp:
host: 239.1.1.1
port: 5500
mpegts:
pnr: 300
pids:
v1: 211
a1: 221
The channel section is merged over the stream section field by field: a value set on the channel overrides the stream value, an unset one is inherited. The exception is the pids map: it is a single field, and a non-empty channel map replaces the stream map wholesale — there is no per-track merging.
Overrides are available only to channels the stream sends out itself. HTTP MPEG-TS playback and the server-wide SRT port always serve the stream's common output with the stream-level settings.
How it works¶
No second multiplexer is started for a channel with its own settings. The channel gets a copy of the common output in which only the service tables and packet PIDs are rewritten: the packet timing layout, PCR, and continuity counters of the common multiplex are preserved, so the CBR properties of the output hold for overridden channels as well. Channels with identical effective settings share one byte-identical stream — a hundred identical pushes cost as much as one.
The table versions of a rewritten output follow its own change history and are never copied from the common output.
Configuring in the console¶
Open the stream, the Egress tab. The stream-level section is called MPEG-TS output; empty fields show the server defaults as hints:

A push over UDP, SRT, or RIST and the SRT playback have their own MPEG-TS output override section. Empty fields inherit the stream section — inherited values are shown as placeholders:

Track PIDs are added row by row: a track name and a number. An empty section is not saved — the channel stays on the common output.