[package]
edition = "2021"
rust-version = "1.85"
name = "arcly-stream"
version = "0.1.6"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "An open-extensible live-media streaming kernel: lock-free zero-copy frame fan-out, instant-start GOP cache, a pluggable multi-protocol ingestion layer (RTMP, RTSP, SRT, WHIP/WHEP shipped), and a feature-gated pure-Rust media plane (MPEG-TS/HLS/fMP4) — runtime, config, and metrics free."
homepage = "https://gitlab.com/arcly/arcly-stream"
documentation = "https://docs.rs/arcly-stream"
readme = "README.md"
keywords = [
"streaming",
"rtmp",
"media",
"hls",
"video",
]
categories = [
"multimedia::video",
"multimedia",
"network-programming",
"asynchronous",
]
license = "MIT"
repository = "https://gitlab.com/arcly/arcly-stream"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
_codec = []
_nal = ["dep:memchr"]
_rtp = [
"_nal",
"codec-h264",
]
auth-token = []
codec = [
"codec-h264",
"codec-aac",
]
codec-aac = ["_codec"]
codec-av1 = ["_codec"]
codec-h264 = [
"_codec",
"_nal",
]
codec-h265 = [
"_codec",
"_nal",
]
codec-vp9 = ["_codec"]
codec-vvc = [
"_codec",
"_nal",
]
codecs-all = [
"codec",
"codec-h265",
"codec-av1",
"codec-vp9",
"codec-vvc",
]
default = []
fmp4 = [
"hls",
"codec-h264",
]
full = [
"macros",
"storage-fs",
"ingest",
"metrics",
"codecs-all",
"hls",
"mpegts",
"fmp4",
"rtmp",
"rtsp",
"srt",
"webrtc",
"record",
"auth-token",
]
hls = []
ingest = ["dep:memchr"]
macros = ["dep:arcly-stream-macros"]
metrics = ["dep:prometheus"]
mpegts = [
"hls",
"codec-h264",
]
record = []
rtmp = [
"ingest",
"codec-h264",
"codec-aac",
"tokio/io-util",
]
rtsp = [
"ingest",
"_rtp",
"tokio/io-util",
]
srt = [
"ingest",
"codec-h264",
"codec-aac",
]
storage-fs = []
webrtc = [
"ingest",
"_rtp",
]
[lib]
name = "arcly_stream"
path = "src/lib.rs"
[[test]]
name = "integration"
path = "tests/integration.rs"
[[test]]
name = "parser_panic_sweep"
path = "tests/parser_panic_sweep.rs"
[[test]]
name = "smoke"
path = "tests/smoke.rs"
[[bench]]
name = "fanout"
path = "benches/fanout.rs"
harness = false
[dependencies.arc-swap]
version = "1"
[dependencies.arcly-stream-macros]
version = "0.1.6"
optional = true
[dependencies.async-trait]
version = "0.1"
[dependencies.bitflags]
version = "2"
features = ["serde"]
[dependencies.bytes]
version = "1"
[dependencies.dashmap]
version = "6"
[dependencies.memchr]
version = "2"
optional = true
[dependencies.prometheus]
version = "0.13"
features = ["process"]
optional = true
default-features = false
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.thiserror]
version = "2"
[dependencies.tokio]
version = "1.38"
features = [
"rt-multi-thread",
"macros",
"net",
"signal",
"sync",
"time",
"fs",
]
[dependencies.tokio-util]
version = "0.7"
features = ["rt"]
[dependencies.tracing]
version = "0.1"
[dev-dependencies.criterion]
version = "0.5"
features = ["cargo_bench_support"]
default-features = false
[dev-dependencies.serde_json]
version = "1"
[dev-dependencies.tokio]
version = "1.38"
features = [
"rt-multi-thread",
"macros",
"net",
"signal",
"sync",
"time",
"fs",
"test-util",
]