Config Versions
Every ErsatzTV Next config file declares the version of its format in a version property. ErsatzTV Next checks the version when it loads the file, so a file written for a different format fails with a clear error instead of being misread.
{
"version": "https://ersatztv.org/channel/version/0.1.0",
...
}
Current Versions
- Lineup:
https://ersatztv.org/lineup/version/0.0.1 - Channel:
https://ersatztv.org/channel/version/0.1.2 - Playout:
https://ersatztv.org/playout/version/0.0.6
Channel 0.1.2 and playout 0.0.6 are not released yet. ErsatzTV Next v0.2.0 reads channel configs up to 0.1.1 and playouts up to 0.0.5.
Compatibility
Versions have the form 0.B.C (B for breaking, C for compatible):
Bchanges when the format changes in a way that older files can't be read correctly. ErsatzTV Next rejects a file whoseBdiffers from its own.Cchanges when the format gains new, optional properties. ErsatzTV Next loads any file with the sameBand aCup to its own.
A release of ErsatzTV Next that changes a config's B is itself a breaking release, and each release lists the config versions it reads. See Releases.
A file without a version is treated as 0.0.0. A lineup without a version still loads. A channel config without a version is rejected, because the channel format is now 0.1.0.
Channel Config Overlays
A channel can merge overlay files on top of its base channel.json (the overlays list in the lineup). ErsatzTV Next checks each file's version before merging, so every overlay needs its own version, even an overlay that sets a single value:
{
"version": "https://ersatztv.org/channel/version/0.1.0",
"fallback": {
"show_error": false
}
}
An overlay without a version stops the channel from starting.
ErsatzTV (legacy) users with next engine channels: overlays in ErsatzTV's config folder / next / channel-config-overlays (default.json and {number}.json) follow the same rules.
Updating Channel Configs to 0.1.0
Channel version 0.1.0 replaced the implicit ""format": null means copy" with an explicit mode:
- Set
"version": "https://ersatztv.org/channel/version/0.1.0"inchannel.jsonand in every overlay. - Replace
"format": nullwith"mode": "copy"innormalization.audioornormalization.video. Keep or add aformatfor items that can't be copied; see Stream Copy. - Remove
normalize_loudness: truefrom audio that uses"mode": "copy". ErsatzTV Next rejects that combination.
"format": null in a base channel.json is now a load error. In an overlay, null removes the key from the merged config, so the default format (h264 / aac) applies. It does not enable copy.