[package]
edition = "2024"
rust-version = "1.85"
name = "lvqr-cli"
version = "1.1.0"
authors = ["Moheeb Zara <hackbuildvideo@gmail.com>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "LVQR single binary entry point"
readme = "README.md"
keywords = [
"streaming",
"server",
"quic",
"moq",
]
categories = [
"multimedia",
"network-programming",
"command-line-utilities",
]
license = "AGPL-3.0-or-later"
repository = "https://github.com/virgilvox/lvqr"
resolver = "2"
[features]
c2pa = [
"lvqr-archive/c2pa",
"dep:c2pa",
]
cluster = ["dep:lvqr-cluster"]
default = [
"rtmp",
"quinn-transport",
"cluster",
]
full = [
"rtmp",
"quinn-transport",
"cluster",
"c2pa",
"whisper",
"transcode",
"jwks",
"webhook",
]
hw-nvenc = [
"transcode",
"lvqr-transcode/hw-nvenc",
]
hw-qsv = [
"transcode",
"lvqr-transcode/hw-qsv",
]
hw-vaapi = [
"transcode",
"lvqr-transcode/hw-vaapi",
]
hw-videotoolbox = [
"transcode",
"lvqr-transcode/hw-videotoolbox",
]
jwks = ["lvqr-auth/jwks"]
quinn-transport = ["lvqr-relay/quinn-transport"]
rtmp = ["lvqr-ingest/rtmp"]
transcode = [
"dep:lvqr-transcode",
"lvqr-transcode/transcode",
"lvqr-whep/aac-opus",
]
webhook = ["lvqr-auth/webhook"]
whisper = [
"dep:lvqr-agent",
"dep:lvqr-agent-whisper",
"lvqr-agent-whisper/whisper",
]
[lib]
name = "lvqr_cli"
path = "src/lib.rs"
[[bin]]
name = "lvqr"
path = "src/main.rs"
[[test]]
name = "agents_admin_route"
path = "tests/agents_admin_route.rs"
[[test]]
name = "archive_admin_route"
path = "tests/archive_admin_route.rs"
[[test]]
name = "archive_dvr_read_e2e"
path = "tests/archive_dvr_read_e2e.rs"
[[test]]
name = "auth_integration"
path = "tests/auth_integration.rs"
[[test]]
name = "broadcast_stop_admin_route"
path = "tests/broadcast_stop_admin_route.rs"
[[test]]
name = "c2pa_cli_flags_e2e"
path = "tests/c2pa_cli_flags_e2e.rs"
[[test]]
name = "c2pa_verify_e2e"
path = "tests/c2pa_verify_e2e.rs"
[[test]]
name = "captions_hls_e2e"
path = "tests/captions_hls_e2e.rs"
[[test]]
name = "cluster_claim_bridge"
path = "tests/cluster_claim_bridge.rs"
[[test]]
name = "cluster_redirect"
path = "tests/cluster_redirect.rs"
[[test]]
name = "config_reload_e2e"
path = "tests/config_reload_e2e.rs"
[[test]]
name = "federation_reconnect"
path = "tests/federation_reconnect.rs"
[[test]]
name = "federation_two_cluster"
path = "tests/federation_two_cluster.rs"
[[test]]
name = "hls_live_auth_e2e"
path = "tests/hls_live_auth_e2e.rs"
[[test]]
name = "ingest_admin_route"
path = "tests/ingest_admin_route.rs"
[[test]]
name = "live_signed_url_e2e"
path = "tests/live_signed_url_e2e.rs"
[[test]]
name = "mesh_capacity_e2e"
path = "tests/mesh_capacity_e2e.rs"
[[test]]
name = "mesh_ws_registration_e2e"
path = "tests/mesh_ws_registration_e2e.rs"
[[test]]
name = "one_token_all_protocols"
path = "tests/one_token_all_protocols.rs"
[[test]]
name = "playback_signed_url_e2e"
path = "tests/playback_signed_url_e2e.rs"
[[test]]
name = "rtmp_archive_e2e"
path = "tests/rtmp_archive_e2e.rs"
[[test]]
name = "rtmp_dash_e2e"
path = "tests/rtmp_dash_e2e.rs"
[[test]]
name = "rtmp_hls_e2e"
path = "tests/rtmp_hls_e2e.rs"
[[test]]
name = "rtmp_whep_audio_e2e"
path = "tests/rtmp_whep_audio_e2e.rs"
[[test]]
name = "rtmp_ws_e2e"
path = "tests/rtmp_ws_e2e.rs"
[[test]]
name = "rtsp_hls_e2e"
path = "tests/rtsp_hls_e2e.rs"
[[test]]
name = "scte35_hls_dash_e2e"
path = "tests/scte35_hls_dash_e2e.rs"
[[test]]
name = "signal_auth_e2e"
path = "tests/signal_auth_e2e.rs"
[[test]]
name = "slo_latency_e2e"
path = "tests/slo_latency_e2e.rs"
[[test]]
name = "srt_dash_e2e"
path = "tests/srt_dash_e2e.rs"
[[test]]
name = "srt_hls_e2e"
path = "tests/srt_hls_e2e.rs"
[[test]]
name = "stream_detail_admin_route"
path = "tests/stream_detail_admin_route.rs"
[[test]]
name = "streamkeys_e2e"
path = "tests/streamkeys_e2e.rs"
[[test]]
name = "transcode_admin_route"
path = "tests/transcode_admin_route.rs"
[[test]]
name = "transcode_ladder_e2e"
path = "tests/transcode_ladder_e2e.rs"
[[test]]
name = "wasm_filter_admin_route"
path = "tests/wasm_filter_admin_route.rs"
[[test]]
name = "wasm_filter_chain"
path = "tests/wasm_filter_chain.rs"
[[test]]
name = "wasm_frame_counter"
path = "tests/wasm_frame_counter.rs"
[[test]]
name = "wasm_hot_reload"
path = "tests/wasm_hot_reload.rs"
[[test]]
name = "whip_hls_e2e"
path = "tests/whip_hls_e2e.rs"
[[test]]
name = "whisper_cli_e2e"
path = "tests/whisper_cli_e2e.rs"
[dependencies.anyhow]
version = "1.0"
[dependencies.arc-swap]
version = "1"
[dependencies.axum]
version = "0.8"
features = ["ws"]
[dependencies.base64]
version = "0.22"
[dependencies.bytes]
version = "1"
[dependencies.c2pa]
version = "0.80"
features = ["rust_native_crypto"]
optional = true
default-features = false
[dependencies.clap]
version = "4"
features = [
"derive",
"env",
]
[dependencies.dashmap]
version = "6"
[dependencies.futures]
version = "0.3"
[dependencies.hmac]
version = "0.12"
[dependencies.lvqr-admin]
version = "1.0.0"
[dependencies.lvqr-agent]
version = "1.0.0"
optional = true
[dependencies.lvqr-agent-whisper]
version = "1.0.0"
optional = true
[dependencies.lvqr-archive]
version = "1.0.0"
[dependencies.lvqr-auth]
version = "1.0.0"
features = ["jwt"]
[dependencies.lvqr-cluster]
version = "1.0.0"
optional = true
[dependencies.lvqr-cmaf]
version = "1.0.0"
[dependencies.lvqr-codec]
version = "1.0.0"
[dependencies.lvqr-core]
version = "1.0.0"
[dependencies.lvqr-dash]
version = "1.0.0"
[dependencies.lvqr-fragment]
version = "1.0.0"
[dependencies.lvqr-hls]
version = "1.0.0"
[dependencies.lvqr-ingest]
version = "1.0.0"
[dependencies.lvqr-mesh]
version = "1.0.0"
[dependencies.lvqr-moq]
version = "1.0.0"
[dependencies.lvqr-observability]
version = "1.0.0"
[dependencies.lvqr-record]
version = "1.0.0"
[dependencies.lvqr-relay]
version = "1.0.0"
[dependencies.lvqr-rtsp]
version = "1.0.0"
[dependencies.lvqr-signal]
version = "1.0.0"
[dependencies.lvqr-srt]
version = "1.0.0"
[dependencies.lvqr-transcode]
version = "1.0.0"
optional = true
[dependencies.lvqr-wasm]
version = "1.0.0"
[dependencies.lvqr-whep]
version = "1.0.0"
[dependencies.lvqr-whip]
version = "1.0.0"
[dependencies.metrics]
version = "0.24"
[dependencies.metrics-exporter-prometheus]
version = "0.16"
default-features = false
[dependencies.metrics-util]
version = "0.19"
[dependencies.moq-lite]
version = "0.15"
[dependencies.parking_lot]
version = "0.12"
[dependencies.rcgen]
version = "0.13"
[dependencies.rustls]
version = "0.23"
features = [
"ring",
"std",
]
default-features = false
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.sha2]
version = "0.10"
[dependencies.subtle]
version = "2"
[dependencies.tokio]
version = "1"
features = [
"full",
"full",
"signal",
]
[dependencies.tokio-util]
version = "0.7"
features = ["rt"]
[dependencies.toml]
version = "0.8"
[dependencies.tower-http]
version = "0.6"
features = [
"cors",
"trace",
]
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]
[dev-dependencies.futures-util]
version = "0.3"
[dev-dependencies.http]
version = "1"
[dev-dependencies.jsonwebtoken]
version = "9"
[dev-dependencies.lvqr-cluster]
version = "1.0.0"
[dev-dependencies.moq-native]
version = "0.13"
[dev-dependencies.rml_rtmp]
version = "0.8"
[dev-dependencies.serde_json]
version = "1.0"
[dev-dependencies.srt-tokio]
version = "0.4"
[dev-dependencies.str0m]
version = "0.18"
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.tokio-tungstenite]
version = "0.24"
[dev-dependencies.tower]
version = "0.5"
[dev-dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]
[dev-dependencies.url]
version = "2"