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)]
|
||||
struct WtPublishArgs {
|
||||
/// Relay URL (WebTransport) to connect to.
|
||||
/// Default points at moq.dev's public relay.
|
||||
#[arg(long, default_value = "https://cdn.moq.dev/anon")]
|
||||
/// Default points at every.channel's public relay.
|
||||
#[arg(long, default_value = "https://relay.every.channel/anon")]
|
||||
url: String,
|
||||
/// Broadcast name to publish.
|
||||
///
|
||||
|
|
@ -483,7 +483,7 @@ struct WtPublishArgs {
|
|||
movflags: String,
|
||||
/// Transmit fMP4 fragments directly (passthrough mode).
|
||||
/// 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,
|
||||
/// Danger: disable TLS verification for the relay.
|
||||
#[arg(long, default_value_t = false)]
|
||||
|
|
@ -531,7 +531,7 @@ struct NbcBootstrapArgs {
|
|||
#[derive(Parser, Debug)]
|
||||
struct NbcWtPublishArgs {
|
||||
/// 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,
|
||||
/// Broadcast name to publish.
|
||||
#[arg(long)]
|
||||
|
|
@ -540,7 +540,7 @@ struct NbcWtPublishArgs {
|
|||
#[arg(long)]
|
||||
source_url: String,
|
||||
/// 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,
|
||||
/// H.264 GOP/keyframe interval in frames.
|
||||
#[arg(long, default_value_t = WT_PUBLISH_GOP_FRAMES)]
|
||||
|
|
@ -1795,6 +1795,41 @@ mod tests {
|
|||
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]
|
||||
fn deterministic_enabled_reads_env() {
|
||||
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
|
||||
clears already visible channels.
|
||||
|
||||
Change the web client, publisher module defaults, runbook examples, and remote watch E2E default
|
||||
relay to `https://relay.every.channel/anon`. Preload/preconnect the primary player dependencies and
|
||||
Change the web client, publisher CLI/module defaults, runbook examples, and remote watch E2E default
|
||||
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
|
||||
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
|
||||
|
|
@ -42,6 +44,8 @@ status, and first observable canvas frame when the browser exposes it.
|
|||
|
||||
## Rollout / teardown plan
|
||||
|
||||
Ship the static web change with the existing Worker asset deploy. Validate with clean-cache
|
||||
desktop/mobile browser loads and check the app's `window.__ecPerf` marks. Teardown is removing the
|
||||
HTML seed/cache/warmup path and returning to live-API-only station rendering.
|
||||
Ship the static web change with the existing Worker asset deploy and roll the publisher hotpatch
|
||||
binary to the LA nodes so their catalogs match the current watcher schema. Validate with clean-cache
|
||||
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