Configuration

Configuration

Pixop Prime is a live MPEG-TS appliance: WAN transport, GPU picture processing, and HEVC encoder output are independent control planes. This page is the operations landing—where configuration lives, what restarts cost, and which specialist guide to open next. Use it before editing files during an on-air window.

Start here: Run pixop-version and record it in your change ticket. Relay transport and extended tsduckctl introspection appear only on relay-capable recipes—confirm command -v tsduck-transport-info and TRANSPORT_BACKEND before relay workflows. Native-only appliances default to native SRT via .env keys. KVM uses the same guest image model; hypervisor setup is KVM quickstart.

For controlled edits, backups, and acceptance tests, follow Configuration change control.

Configuration control planes

Each plane has its own source of truth, edit surface, and apply boundary. Mixing planes (for example encoder colour flags vs UI tone mapping) is the most common commissioning defect.

PlaneSource of truthHow operators change itTakes effect
Encoded output/etc/pixop-live/nvencc.argsSSH + editor on marked operator blocksAfter pixopctl restart (pixop-live.service only)
Picture processingRuntime: Pixop filter in memory; persisted: /var/lib/pixop-live/parameters/params.jsonWeb UI / REST on TCP 8080 (trusted management CIDR only)Runtime API updates apply without container restart; Save writes params.json for the next startup
Network / transport/etc/pixop-live/network.env, per-instance /etc/pixop-live/tsduck/*.env, relay *.ingest.args / *.egress.args when TRANSPORT_BACKEND=relaytsduckctl, controlled file editsAfter tsduckctl restart on the affected instance (main = ingest + internal mux; egress-main = egress leg only)
Host image & lifecycle/etc/pixop-live/live.env, tsduck.env (LIVE_IMAGE / TSDUCK_IMAGE digests)pixop-image-update (not hand-edited tags)Restarts only units that were active at apply time
Licensing & PulseAWS: Marketplace activation artifacts; KVM: /etc/pixop-live/license.jwtAWS: first-boot flow + pixop-license; KVM: pixop-install license set on hostEntitlement gate for processing; JWT UID 1001, mode 0400
Automatic recovery/etc/pixop-live/healthcheck.envEdit thresholds only with support guidancepixop-healthcheck.timer may call pixopctl recover (stops primary ingress, restarts Pixop, restarts ingress)
File processing presetsTOML under /opt/pixop/share/process-presets/ and /etc/pixop-live/process-presets/pixop-process / site dropsNo live pipeline effect; batch jobs share GPU with live paths

Source vs persisted picture parameters

At container startup, NVEncC loads --vpp-pixop-live from nvencc.args, including params_file=/var/lib/pixop-live/parameters/params.json. When a key exists in params.json, it overrides the matching --vpp-pixop-live CLI value for that process (a virgin AMI has no params.json). Baseline keys such as restoration_mode=full and controller_preset=realtime_balanced in nvencc.args are policy defaults, not day-to-day operator knobs.

UI runtime changes apply immediately; Save writes params.json for the next startup. Detail: Picture processing.

On-appliance data path (reference)

SRT :5000 → tsduck-in@main → 239.0.0.1:5500 → pixop-live → 239.0.0.1:5501
                              → mux/PCR/PID → 239.0.0.1:5600 → tsduck-out@egress-main → SRT :5001

Multicast addresses are on-guest hand-offs, not customer WAN endpoints. Topology, ports, and release gates: Network and transport.

Filesystem inventory

Templates under /etc/pixop-live install when missing; appliance provisioning and package apply do not overwrite operator-edited files (missing relay *.args may still be added on upgrade). Never blind-copy an entire /etc/pixop-live tree from another host: JWT, Pulse, Docker Hub, and SRT passphrases are instance-specific.

LocationSensitive?Typical editorEffect / restart
/etc/pixop-live/nvencc.argsNo secrets; defines output contractRoot or sudo (root:root 0640)pixopctl restart
/etc/pixop-live/live.env, tsduck.envImage digests; not passphrasespixop-image-updateActive units restarted on apply
/etc/pixop-live/network.envNoRoot/sudoTSDuck units reading backbone keys; often paired with main.env
/etc/pixop-live/tsduck/*.envYes (SRT_PASSPHRASE, etc.)Root/sudo (0600)tsduckctl restart on that instance
/etc/pixop-live/tsduck/*.ingest.args, *.egress.argsPlaceholders only (@SRT_PASSPHRASE@)Root/sudo (0640)Relay backend; restart affected instance
/etc/pixop-live/healthcheck.envNoSupport-directedTimer-driven recovery policy
/etc/pixop-live/license.jwtYesProvisioning / license CLIContainer read via bind mount; never in support tarballs
/etc/pixop-live/pulse.env, docker.envYesFirst-boot / supportExcluded from packers
/var/lib/pixop-live/parameters/params.jsonSite processing profileUI Save (UID 1001 writes)Overrides CLI at next Pixop start; backup separately
/etc/pixop-live/process-presets/*.tomlUsually noOperatorFile jobs only

Permissions: ec2-user (groups pixop, docker) runs CLIs without prefixing sudo. TSDuck .env files are 0600; use tsduckctl credentials on-box—never paste passphrases into tickets.

Back up for restore: Private copies of nvencc.args, relevant tsduck/*.env and relay args, and params.json (not captured by pixop-pack-config). Procedure: Configuration change control.

Task → guide matrix

Your taskOpen
Output resolution, chroma, HEVC bitrate, VUI SDR/HLG/PQ flags, optional YADIFLive output and encoding
Restoration, scaling, HDR/SDR processing, grain, PostFX, controllerPicture processing
SRT passphrases, latency, PIDs, relay vs native, multipathTransport configuration → Network and transport
Change tickets, backups, acceptance, rollbackConfiguration change control
Offline transcode / preset TOMLFile processing presets
Container digest updatepixop-image-update
EntitlementLicensing and support
Health signals and automatic restartMonitoring and health signals

Restart and blast radius

ActionWhat restartsOperator impact
pixopctl restartpixop-live.service onlyOutput gap on the replacement elementary path while Pixop is down; primary SRT ingest unit is not stopped by design, but downstream viewers must not assume gapless enhanced video
pixopctl recoverStops tsduck-in@main, restarts Pixop, starts ingressIngest interruption on the primary leg; used by healthcheck and manual wedge recovery
tsduckctl restart mainPrimary ingress + internal mux/tap pathIngest and merged TS gap until listeners and merge recover
tsduckctl restart egress-mainEgress SRT onlyDownstream receiver stream gap; ingest and Pixop keep running
tsduckctl detect-video-pid main --apply / tune-latency main --applyRewrites .env and restarts ingressSame as restart main when --apply is used
UI runtime tuningNone (in-process)Immediate picture change; may spike GPU load
UI SaveNonePersists params.json; full effect on next pixopctl restart or container recreate
pixop-image-update --applyActive Pixop/TSDuck units per tool policySoftware version change; plan like any production release
File preset editNone for liveAffects future pixop-process jobs only

There is no supported “zero outage” guarantee for encoder or transport configuration changes on a single appliance.

Safe change checklist (summary)

  1. Baseline — pixop-version, pixop-stack status, transport checks, and (when on air) pixop-flow --secs 5 per Configuration change control.
  2. Private backup — Root-readable archive of nvencc.args, transport env/args, and params.json before edits; restrict directory mode 0700.
  3. Edit sanctioned knobs only — Operator blocks in nvencc.args; transport keys documented in Transport configuration; picture keys via UI—not ad-hoc duplication into nvencc.args.
  4. Validate — pixop-preflight after host-level changes; tsduckctl check after transport restarts; decoder/player check for program, resolution, and colour.
  5. Rollback — Restore backed-up files, repeat the same restart class, re-run acceptance. Do not treat pixop-pack-config output as a secret restore bundle.

Support packaging: pixop-pack-config and pixop-support-bundle provide redacted /etc/pixop-live snapshots for diagnosis. They exclude license.jwt and Pulse/Docker credential bodies, do not include params.json, and are not a substitute for your private backups.

Escalation

When opening a Pixop support case, attach version output, a support bundle or pack-config archive (review for residual secrets), and a non-secret description of the change. Keep JWTs, SRT passphrases, and Pulse credentials out of email and chat. For live incidents, start from Monitoring and troubleshooting and Incident response runbook.

Related


Did this page help you?