wt-publish: default to CMAF passthrough seedbox mode
This commit is contained in:
parent
8e9eafe735
commit
1197bb4baa
4 changed files with 31 additions and 3 deletions
|
|
@ -60,6 +60,8 @@ cargo run -p ec-node -- wt-publish \
|
||||||
--control-endpoint-addr-out /tmp/la-nbc-control-endpoint.json
|
--control-endpoint-addr-out /tmp/la-nbc-control-endpoint.json
|
||||||
```
|
```
|
||||||
|
|
||||||
|
`wt-publish` defaults to `--passthrough=true` so relay and archive retain exact CMAF fragment bytes.
|
||||||
|
|
||||||
Watch (web):
|
Watch (web):
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
|
|
|
||||||
|
|
@ -435,7 +435,7 @@ struct WtPublishArgs {
|
||||||
transcode: bool,
|
transcode: bool,
|
||||||
/// Transmit fMP4 fragments directly (passthrough mode).
|
/// Transmit fMP4 fragments directly (passthrough mode).
|
||||||
/// When false, the importer may reframe into CMAF fragments.
|
/// When false, the importer may reframe into CMAF fragments.
|
||||||
#[arg(long, default_value_t = false, action = clap::ArgAction::Set)]
|
#[arg(long, default_value_t = true, action = clap::ArgAction::Set)]
|
||||||
passthrough: bool,
|
passthrough: bool,
|
||||||
/// Danger: disable TLS verification for the relay.
|
/// Danger: disable TLS verification for the relay.
|
||||||
#[arg(long, default_value_t = false)]
|
#[arg(long, default_value_t = false)]
|
||||||
|
|
|
||||||
26
evolution/proposals/ECP-0072-cmaf-seedbox-invariant.md
Normal file
26
evolution/proposals/ECP-0072-cmaf-seedbox-invariant.md
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
# ECP-0072: CMAF Seedbox Invariant For Relay Archive
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
Archive replay currently stores and serves relay groups exactly as received, but many existing broadcasts were published in `legacy` container mode. Those bytes are not browser-HLS compatible, so archive playback fails despite a valid timeline and object store.
|
||||||
|
|
||||||
|
## Decision
|
||||||
|
|
||||||
|
Make `wt-publish` default to CMAF passthrough (`--passthrough=true`) so:
|
||||||
|
|
||||||
|
- relay subscribers and archive workers observe the same CMAF fragment bytes (`moof+mdat`);
|
||||||
|
- archive replay can serve those exact bytes without re-encoding;
|
||||||
|
- the archive acts as a history seedbox of previously played chunks.
|
||||||
|
|
||||||
|
Update the NixOS module default `services.every-channel.ec-node.passthrough = true` to keep host deployments aligned with the seedbox invariant.
|
||||||
|
|
||||||
|
## Rationale
|
||||||
|
|
||||||
|
- Zero-transform archive path is simpler and more auditable.
|
||||||
|
- Exact-byte retention avoids drift between live and replay.
|
||||||
|
- Browsers can play CMAF fragments via standard HLS tooling; no custom legacy converter is required for new streams.
|
||||||
|
|
||||||
|
## Reversibility
|
||||||
|
|
||||||
|
- Operators can explicitly set `passthrough = false` per host to revert to legacy framing.
|
||||||
|
- Existing archived legacy data remains readable for timeline/index use, but may require separate migration tooling for browser playback.
|
||||||
|
|
@ -60,8 +60,8 @@ in
|
||||||
|
|
||||||
passthrough = lib.mkOption {
|
passthrough = lib.mkOption {
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
default = false;
|
default = true;
|
||||||
description = "Whether to transmit fMP4 fragments directly (moq-mux passthrough).";
|
description = "Whether to transmit CMAF fMP4 fragments directly (seedbox-compatible passthrough).";
|
||||||
};
|
};
|
||||||
|
|
||||||
tlsDisableVerify = lib.mkOption {
|
tlsDisableVerify = lib.mkOption {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue