Default live publishers to relay passthrough
This commit is contained in:
parent
168e9928a5
commit
b49dcff27d
2 changed files with 49 additions and 10 deletions
|
|
@ -457,8 +457,8 @@ struct WsSubscribeArgs {
|
||||||
#[derive(Parser, Debug)]
|
#[derive(Parser, Debug)]
|
||||||
struct WtPublishArgs {
|
struct WtPublishArgs {
|
||||||
/// Relay URL (WebTransport) to connect to.
|
/// Relay URL (WebTransport) to connect to.
|
||||||
/// Default points at moq.dev's public relay.
|
/// Default points at every.channel's public relay.
|
||||||
#[arg(long, default_value = "https://cdn.moq.dev/anon")]
|
#[arg(long, default_value = "https://relay.every.channel/anon")]
|
||||||
url: String,
|
url: String,
|
||||||
/// Broadcast name to publish.
|
/// Broadcast name to publish.
|
||||||
///
|
///
|
||||||
|
|
@ -483,7 +483,7 @@ struct WtPublishArgs {
|
||||||
movflags: String,
|
movflags: String,
|
||||||
/// 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)]
|
||||||
|
|
@ -531,7 +531,7 @@ struct NbcBootstrapArgs {
|
||||||
#[derive(Parser, Debug)]
|
#[derive(Parser, Debug)]
|
||||||
struct NbcWtPublishArgs {
|
struct NbcWtPublishArgs {
|
||||||
/// Relay URL (WebTransport) to connect to.
|
/// Relay URL (WebTransport) to connect to.
|
||||||
#[arg(long, default_value = "https://cdn.moq.dev/anon")]
|
#[arg(long, default_value = "https://relay.every.channel/anon")]
|
||||||
url: String,
|
url: String,
|
||||||
/// Broadcast name to publish.
|
/// Broadcast name to publish.
|
||||||
#[arg(long)]
|
#[arg(long)]
|
||||||
|
|
@ -540,7 +540,7 @@ struct NbcWtPublishArgs {
|
||||||
#[arg(long)]
|
#[arg(long)]
|
||||||
source_url: String,
|
source_url: String,
|
||||||
/// Transmit fMP4 fragments directly (passthrough mode).
|
/// Transmit fMP4 fragments directly (passthrough mode).
|
||||||
#[arg(long, default_value_t = false, action = clap::ArgAction::Set)]
|
#[arg(long, default_value_t = true, action = clap::ArgAction::Set)]
|
||||||
passthrough: bool,
|
passthrough: bool,
|
||||||
/// H.264 GOP/keyframe interval in frames.
|
/// H.264 GOP/keyframe interval in frames.
|
||||||
#[arg(long, default_value_t = WT_PUBLISH_GOP_FRAMES)]
|
#[arg(long, default_value_t = WT_PUBLISH_GOP_FRAMES)]
|
||||||
|
|
@ -1795,6 +1795,41 @@ mod tests {
|
||||||
assert!(set.contains("d"));
|
assert!(set.contains("d"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn publish_commands_default_to_current_relay_passthrough() {
|
||||||
|
let cli = Cli::parse_from([
|
||||||
|
"ec-node",
|
||||||
|
"wt-publish",
|
||||||
|
"--name",
|
||||||
|
"la-test",
|
||||||
|
"--input",
|
||||||
|
"http://example.invalid/auto/v2.1",
|
||||||
|
]);
|
||||||
|
match cli.command {
|
||||||
|
Commands::WtPublish(args) => {
|
||||||
|
assert_eq!(args.url, "https://relay.every.channel/anon");
|
||||||
|
assert!(args.passthrough);
|
||||||
|
}
|
||||||
|
_ => panic!("expected wt-publish command"),
|
||||||
|
}
|
||||||
|
|
||||||
|
let cli = Cli::parse_from([
|
||||||
|
"ec-node",
|
||||||
|
"nbc-wt-publish",
|
||||||
|
"--name",
|
||||||
|
"nbc-test",
|
||||||
|
"--source-url",
|
||||||
|
"https://example.invalid/live",
|
||||||
|
]);
|
||||||
|
match cli.command {
|
||||||
|
Commands::NbcWtPublish(args) => {
|
||||||
|
assert_eq!(args.url, "https://relay.every.channel/anon");
|
||||||
|
assert!(args.passthrough);
|
||||||
|
}
|
||||||
|
_ => panic!("expected nbc-wt-publish command"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn deterministic_enabled_reads_env() {
|
fn deterministic_enabled_reads_env() {
|
||||||
let prev = std::env::var("EVERY_CHANNEL_DETERMINISTIC").ok();
|
let prev = std::env::var("EVERY_CHANNEL_DETERMINISTIC").ok();
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,10 @@ Also keep a short-lived local guide cache, merge cached entries with the HTML se
|
||||||
`/api/public-streams` in the background with a bounded timeout. A slow or empty refresh no longer
|
`/api/public-streams` in the background with a bounded timeout. A slow or empty refresh no longer
|
||||||
clears already visible channels.
|
clears already visible channels.
|
||||||
|
|
||||||
Change the web client, publisher module defaults, runbook examples, and remote watch E2E default
|
Change the web client, publisher CLI/module defaults, runbook examples, and remote watch E2E default
|
||||||
relay to `https://relay.every.channel/anon`. Preload/preconnect the primary player dependencies and
|
relay to `https://relay.every.channel/anon`. Default `wt-publish` and `nbc-wt-publish` to fMP4
|
||||||
|
passthrough so hotpatch-launched publishers emit the `timescale` and `trackId` CMAF catalog metadata
|
||||||
|
expected by the hosted `@moq/watch` element. Preload/preconnect the primary player dependencies and
|
||||||
warm the `@moq/watch` custom element after first paint. Let `@moq/watch` use its available live
|
warm the `@moq/watch` custom element after first paint. Let `@moq/watch` use its available live
|
||||||
transport fallback instead of forcing WebTransport-only playback. Add client performance marks for
|
transport fallback instead of forcing WebTransport-only playback. Add client performance marks for
|
||||||
guide first render, guide fetch, watch request, player module readiness, player mount, catalog/live
|
guide first render, guide fetch, watch request, player module readiness, player mount, catalog/live
|
||||||
|
|
@ -42,6 +44,8 @@ status, and first observable canvas frame when the browser exposes it.
|
||||||
|
|
||||||
## Rollout / teardown plan
|
## Rollout / teardown plan
|
||||||
|
|
||||||
Ship the static web change with the existing Worker asset deploy. Validate with clean-cache
|
Ship the static web change with the existing Worker asset deploy and roll the publisher hotpatch
|
||||||
desktop/mobile browser loads and check the app's `window.__ecPerf` marks. Teardown is removing the
|
binary to the LA nodes so their catalogs match the current watcher schema. Validate with clean-cache
|
||||||
HTML seed/cache/warmup path and returning to live-API-only station rendering.
|
desktop/mobile browser loads and check the app's `window.__ecPerf` marks plus a live tune through the
|
||||||
|
public relay. Teardown is removing the HTML seed/cache/warmup path, returning to live-API-only station
|
||||||
|
rendering, and explicitly passing `--passthrough=false` only if an older watcher path is restored.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue