perf(video): 优化视频流水线并统一使用 vendored OpenSSL

使用固定采集、解码和编码线程及同步最新帧槽,减少同步异步跨界和无效 MJPEG 解码。

编码前预留消费者容量,以完整批次投递编码结果并隔离慢客户端,避免丢失 H.264 参考帧;保留 PTS 修正,不增加 IDR 节流。

复用 Annex-B 缓冲并增加低频发送分项统计,默认启用 vendored OpenSSL SRTP AES-CM 后端。

HTTP 客户端、HTTPS 服务端和本地 DTLS 证书验证迁移至 OpenSSL,移除 rustls TLS 引擎依赖,保留证书验证、媒体加密和原有协议协商。
This commit is contained in:
mofeng-git
2026-10-01 18:34:21 +08:00
parent 48cd06c7a4
commit 318b58b26a
115 changed files with 18160 additions and 273 deletions

View File

@@ -35,7 +35,7 @@ desktop = [
"dep:urlencoding",
"dep:rust-embed",
"dep:mime_guess",
"dep:rustls",
"dep:openssl",
"dep:rcgen",
"dep:axum-server",
"dep:clap",
@@ -110,8 +110,7 @@ base64 = { version = "0.22", optional = true }
tempfile = { version = "3", optional = true }
# HTTP client (for URL downloads)
# Use rustls by default, but allow native-tls for systems with older GLIBC
reqwest = { version = "0.13", features = ["stream", "rustls-no-provider", "json"], default-features = false, optional = true }
reqwest = { version = "0.13", features = ["stream", "native-tls-vendored", "json"], default-features = false, optional = true }
urlencoding = { version = "2", optional = true }
# Static file embedding
@@ -119,9 +118,9 @@ rust-embed = { version = "8", features = ["compression", "debug-embed"], optiona
mime_guess = { version = "2", optional = true }
# TLS/HTTPS
rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12"], optional = true }
openssl = { version = "0.10", features = ["vendored"], optional = true }
rcgen = { version = "0.14", optional = true }
axum-server = { version = "0.8", features = ["tls-rustls-no-provider"], optional = true }
axum-server = { version = "0.8", features = ["tls-openssl"], optional = true }
# CLI argument parsing
clap = { version = "4", features = ["derive"], optional = true }
@@ -148,7 +147,7 @@ parking_lot = { version = "0.12", optional = true }
arc-swap = { version = "1.8", optional = true }
# WebRTC
webrtc = { version = "0.17", optional = true }
webrtc = { version = "0.17", features = ["vendored-openssl"], optional = true }
rtp = { version = "0.17", optional = true }
rtsp-types = { version = "0.1", optional = true }
sdp-types = { version = "0.1", optional = true }
@@ -206,6 +205,9 @@ windows-sys = { version = "0.61", features = [
[build-dependencies]
protobuf-codegen = "3.7"
[patch.crates-io]
dtls = { path = "vendor/dtls" }
[profile.release]
opt-level = 3
lto = true