Gateway 1.1.1: File/HLS/bars to multicast, ST2022-7 or SRT; CBR and operator monitoring.
10K+
Gateway 1.1.1 is a containerized File/HLS/test-signal media gateway with multicast, ST 2022-7, and SRT output. It includes an HTTPS operator UI, CBR normalization, CPU/input/output status, bitrate and connection charts, live logs, and recovery supervision. Application page names use Gateway; InterTech logos and scrolling test-pattern artwork are retained.
rubenc2/gateway:1.1.1.linux/amd64 and linux/arm64.1.1.1 explicitly; latest remains pinned to 1.1.0.Digital_TV; Service Name 5G-Broadcast.Inputs:
Outputs:
SRT is an output, not an input, in 1.1.1. GPU encoding, SRT input, RIST, and RTMP are not included. GPAC/ATSC 3.0 development is maintained separately in the ROUTEWAY repository.
Muxrate sets the target bitrate of the final MPEG transport stream. It includes video, audio, transport overhead, and stuffing/null packets. It applies in all three modes below. Network headers add overhead beyond this TS bitrate; ST 2022-7 also sends a copy on each output path.
| Mode | What Gateway does | When to use it |
|---|---|---|
| Follow | Preserves encoded media through stream copy/remux where supported, with a source-bitrate check at Start | The input already fits the configured muxrate |
| CBR | Re-encodes video with libx264 and audio with AAC at a controlled output bitrate | You need to reduce or normalize the input bitrate |
| CBR-lock | Adds highest-playable-HLS-rendition selection and fixed output dimensions to CBR | Downstream equipment needs stable output resolution |
In CBR modes, the target video bitrate is muxrate minus 1.3 Mb/s, with AAC audio at 192 kb/s. The remaining budget accommodates audio and transport overhead. At a muxrate of 6 Mb/s, the video target is 4.7 Mb/s. CBR may transcode a higher-bitrate source into a smaller output; the operator controls the quality tradeoff through muxrate. Media bitrate can still fluctuate over short measurement intervals even when the final TS muxrate is constant.
CBR-lock is available for HLS. Gateway selects the highest playable rendition with muxed audio and fixes the output dimensions to that rendition. If the selected source later changes dimensions, scaling/padding preserves the output geometry. This does not guarantee automatic switching among HLS renditions. The option is hidden for File and built-in bars.
For multicast deployments, run on Linux with host networking. The existing local Compose file with port mapping can be used for UI checks on Docker Desktop; physical multicast/interface behavior has not been validated on macOS.
services:
gateway:
image: rubenc2/gateway:1.1.1
container_name: gateway
network_mode: host
restart: unless-stopped
environment:
IPADDRESS: "<host-ip>"
SERVERNAME: ""
APP_USERNAME: "admin"
APP_PASSWORD: "<change-me>"
CPU_STATUS_GREEN_MAX: "65.0"
CPU_STATUS_ORANGE_MAX: "85.0"
CPU_STATUS_EMA_ALPHA: "0.35"
GATEWAY_LOG_LEVEL: "INFO"
GATEWAY_THUMBNAIL_FPS: "1.0"
SENTINEL_INTERVAL_RUNNING: "5"
SENTINEL_INTERVAL_IDLE: "10"
SENTINEL_STATUS_LOG_INTERVAL: "60"
volumes:
- gateway_uploads:/var/www/html/uploads
- gateway_hls:/var/www/html/hls
- gateway_output:/var/www/html/output
- gateway_state:/var/www/html/state
- gateway_logs:/home/appuser/logs
volumes:
gateway_uploads:
gateway_hls:
gateway_output:
gateway_state:
gateway_logs:
Set your host address and credentials, then run:
docker compose pull
docker compose up -d
Open https://<host-ip>. The container generates a self-signed certificate and
redirects HTTP to HTTPS. If SERVERNAME is empty, it uses IPADDRESS.
The volumes above preserve uploads, generated HLS/output files, input state, and
logs. The current settings.txt file and HLS URL catalog are not covered by these
named volumes; retain copies before recreating an existing container. No new
configuration migration or persistence behavior was introduced in this release.
Follow: an already encoded input that fits a 6 Mb/s mux can remain stream-copy. At Start, Gateway checks that it fits with headroom; it does not silently clip it.
CBR: with a 6 Mb/s mux, the video target is 4.7 Mb/s and audio is AAC at 192 kb/s. Higher-rate input can be transcoded down. A fixed final TS rate does not mean every short-window media-rate sample is identical.
SRT Listener output: set Listener, port 9000, latency 200 ms, an active local interface, and leave bandwidth blank initially. A remote SRT receiver connects as Caller to the Gateway host. Listener is still sending media, not ingesting it.
SRT Caller output: set Caller, the receiver host and port, latency, and local interface. The receiver listens. Negotiated latency can exceed the configured value if the peer requests more. Memory buffers for high rates are separate.
Monitoring: a card reading 3 loss reports and a current chart rate of 0 packets/s is valid: three occurred earlier and none in the latest interval. Hover shows Run totals. Recovery attempts are sender retransmissions, not a receiver-confirmed recovered count. Stop clears the Run; reconnect preserves it.
The UI is available at https://<host-ip>. Override bundled development
credentials on shared/production systems. The certificate is self-signed; no SSH
service is exposed inside the container. Host networking on Linux is the intended
media environment. macOS/Docker Desktop mapped-port UI checks do not establish
physical multicast/interface behavior.
API paths, configuration keys, volume names, service IDs, directories, and legacy
color-bar aliases are preserved. The visible built-in input is now
Gateway Color Bars; its scrolling InterTech branding and encoding are unchanged.
New defaults do not overwrite explicit values in a retained settings file.
File looping prepares a disposable indexed copy without re-encoding. Allow free space for approximately the source size plus the larger of 64 MiB or 10%; Stop cleans the copy. Preparation is limited to 90 seconds. Preview-only AAC conversion never changes transmitted AC-3 audio; the compact notice explains its scope.
See the illustrated operator guide
for full SRT examples, CBR math, diagnostic interpretation, and settings/catalog
backup and restore commands. Avoid recreating an existing container without
preserving its settings.txt and HLS.txt; those files are outside the default
named volumes.
See the README for the project's existing license declaration.
This patch leaves the 1.1.0 media pipeline unchanged. Executed checks and publication receipts are recorded in the 1.1.1 review and validation receipt.
Content type
Image
Digest
sha256:2a576a2a5…
Size
422.7 MB
Last updated
6 days ago
docker pull rubenc2/gateway