Migrate your existing setup
Import the configuration of your existing streaming server, keep your channel names, URLs, SRT ports, passphrases and auth backends, compare both servers side by side, and cut over when you are ready. Nothing is dropped silently: every directive that maps differently is in the import report.
Four steps
Import, disabled
Run the importer on your existing configuration file — from the command line, the REST API (dry run by default) or the web UI under Settings.
Review the report
Errors, warnings and infos per stream, directive and line. Typical work: set up the auth hook, replace skipped input types.
Enable and compare
Enable channels one by one or by label (e.g. all that ran on the old server), and compare renditions, audio languages, subtitles and latency.
Cut over
Move DNS, the virtual IP or the load balancer. Encoders and SRT viewers keep their port numbers and passphrases.
# import every channel disabled, merged into the current configuration, with a JSON report;
# the exact importer command is in the operations guide shipped with the server
alteoxms -check-config -config /etc/alteoxms/config.new.json The emitted configuration always passes the config check. Secrets the new model cannot use (stream passwords, auth backend tokens) are not copied; SRT passphrases and input headers are, and the file is written with mode 0600.
Your control plane keeps working
Auth backend protocol
The server can ask your existing HTTP auth backends in the request format they already understand — including multiple backends in parallel and periodic re-checks via X-AuthDuration. No change on the backend side.
Event sinks
Compatible event sinks with the same JSON array format: play_started, play_closed and source events.
Monitoring API
A compatible monitoring API subset with streams, server statistics and event sinks, so the control plane that monitors your current edges can monitor this server.
Configuration lookup
Dynamic channels from the same configuration backend (config_external): a requested stream name is looked up and run on demand.
What maps to what
| Existing configuration | Alteox Media Server |
|---|---|
template NAME { … } | Channel template + transcode profile; streams store only their own settings |
stream NAME { … } | Channel (same name, sanitized); the original name and title kept as labels |
input URL (repeated) | Inputs in the same order = failover priority; priority=N kept |
srt://, tshttp(s)://, hls(s)://, udp://, rtp://, copy:// | Same input types (tshttp → http) |
publish:// + srt_publish { port; passphrase; } | Dedicated SRT publish port, same port and passphrase |
srt_play { port; passphrase; } | Dedicated SRT play port, same port and passphrase |
input option header.NAME=VALUE / user_agent= | Input request headers and User-Agent |
transcoder vb=… ab=… hw=nvenc deviceid=N … | Transcode profile: renditions, audio rules, nvidia:N |
segment_duration, segment_count | HLS/DASH segment length and window |
on_demand, clients_timeout | on_demand, on_demand_idle |
push udp://… | UDP output |
source_timeout N | failover.loss_timeout |
config_external URL | Dynamic channels from the same lookup server |
on_play / password / auth_backend | Access check switched on; your auth backend keeps working with the compatible backend protocol |
URLs
HLS stays /<channel>/index.m3u8, HTTP MPEG-TS stays /<channel>/mpegts, DASH is /<channel>/manifest.mpd. A single ABR rung is selected by rendition name in the path
(/<channel>/720p/mpegts, SRT read:<channel>/720p) instead of a track filter.
Not supported
We say it up front, so you can plan for it.
- DVR / timeshift, thumbnails, EPG
- RTMP and RTSP ingest
- Vendor-specific server-to-server inputs and cluster ingest
- Vendor-specific playback URL variants (beyond index.m3u8, mpegts and manifest.mpd)
- Prefix templates (template t prefix…)
On-demand behaviour
As before, the first viewer wakes an on-demand channel and waits until data flows. A transcoded on-demand stream is expected to need about 5–12 s with NVENC. transcode_on_demand (new) keeps the source running and only starts the transcoder for viewers of a rendition.