[package]
name = "rustrtc"
version = "0.4.10"
edition = "2024"
authors = ["jinti<shenjindi@fourz.cn>"]
repository = "https://github.com/restsend/rustrtc"
description = "A high-performance real-time communication library — WebRTC, RTP/SRTP, T.38 Fax, and RTP Latching"
readme = "README.md"
keywords = ["rtp", "srtp", "webrtc", "fax", "turn"]
categories = ["network-programming"]
license = "MIT"
exclude = ["flamegraph.svg","examples", "tests", "rustrtc_sfu.png", "output.ulaw"]
[dependencies]
anyhow = { version = "1", optional = true }
thiserror = { version = "2", default-features = false }
serde = { version = "1", default-features = false, features = ["derive", "alloc"] }
serde_json = { version = "1", default-features = false, features = ["alloc"] }
tokio = { version = "1", optional = true, features = [
"rt-multi-thread",
"macros",
"sync",
"time",
"net",
"io-util",
] }
tracing = { version = "0.1", default-features = false, features = ["attributes"] }
async-trait = "0.1"
bytes = { version = "1", default-features = false }
aes = "0.9.2"
ctr = "0.10"
hmac = "0.13.0"
sha1 = "0.11.0"
sha2 = "0.11.0"
md5 = { package = "md-5", version = "0.11.0" }
p256 = { version = "0.13.2", optional = true, default-features = false, features = ["alloc", "ecdh", "ecdsa", "pkcs8"] }
aes-gcm = { version = "0.10.3", default-features = false, features = ["aes", "alloc"] }
futures = { version = "0.3.32", default-features = false, features = ["alloc"] }
crc32fast = { version = "1.5.0", default-features = false }
base64 = { version = "0.22.1", default-features = false, features = ["alloc"] }
local-ip-address = { version = "0.6", optional = true }
rand = { version = "0.10.1", optional = true }
parking_lot = { version = "0.12", optional = true }
socket2 = { version = "0.6", optional = true }
igd = { version = "0.12", optional = true, features = ["aio"] }
rcgen = { version = "0.14.8", optional = true, default-features = false, features = [
"pem",
"ring",
] }
[dev-dependencies]
axum = { version = "0.8", features = ["multipart"] }
turn = "0.17.1"
webrtc = "0.17.1"
reqwest = { version = "0.13", default-features = false, features = [
"json",
"charset",
"http2",
"system-proxy",
"rustls-no-provider",
] }
webrtc-util = "0.17.1"
env_logger = "0.11.10"
dtls = "0.17.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
indicatif = "0.18.4"
rustls = { version = "0.23", default-features = false, features = [
"ring",
"tls12",
"logging",
] }
hyper-rustls = { version = "0.27", default-features = false, features = [
"http1",
"tls12",
"logging",
"native-tokio",
] }
tokio-rustls = { version = "0.26", default-features = false, features = [
"ring",
"tls12",
"logging",
] }
serial_test = "3.4.0"
socket2 = "0.6"
tower-http = { version = "0.6", features = ["fs"] }
[features]
default = ["std"]
std = [
"dep:anyhow",
"dep:tokio",
"dep:local-ip-address",
"dep:parking_lot",
"dep:socket2",
"dep:igd",
"dep:rcgen",
"dep:rand",
"crypto-p256",
"dtls",
"bytes/std",
"bytes/serde",
]
simulator = []
t38 = []
t38-interop = []
dtls = []
crypto-p256 = ["dep:p256"]
test-hooks = []
[[example]]
name = "t38_bench"
required-features = ["t38"]
[profile.dev]
split-debuginfo = "unpacked"
[profile.test]
split-debuginfo = "unpacked"
[profile.release]
lto = "fat"
codegen-units = 1
strip = "symbols"
[profile.bench]
lto = "fat"
codegen-units = 1
[[example]]
name = "audio_saver"
required-features = ["std"]
[[example]]
name = "benchmark"
required-features = ["std"]
[[example]]
name = "datachannel_chat"
required-features = ["std"]
[[example]]
name = "datachannel_stress"
required-features = ["std"]
[[example]]
name = "dtls_srtp_bench"
required-features = ["std"]
[[example]]
name = "echo_server"
required-features = ["std"]
[[example]]
name = "interop_pion"
required-features = ["std"]
[[example]]
name = "latency_optimization"
required-features = ["std"]
[[example]]
name = "repro_sdp"
required-features = ["std"]
[[example]]
name = "rewrite_relay_e2e"
required-features = ["std"]
[[example]]
name = "rtp_bench_echo"
required-features = ["std"]
[[example]]
name = "rtp_bench_generator"
required-features = ["std"]
[[example]]
name = "rtp_bench_sut"
required-features = ["std"]
[[example]]
name = "rtp_pc_echo_bench"
required-features = ["std"]
[[example]]
name = "rtp_play"
required-features = ["std"]
[[example]]
name = "rtp_reinvite_demo"
required-features = ["std"]
[[example]]
name = "rtp_track_event"
required-features = ["std"]
[[example]]
name = "rustrtc_sfu"
required-features = ["std"]
[[example]]
name = "sctp_benchmark"
required-features = ["std"]