Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
b275283
feat(nodes): add RTMP publisher (sink) node
streamkit-devin Apr 6, 2026
c14dc8a
fix(nodes/rtmp): address review feedback
streamkit-devin Apr 6, 2026
bac235a
fix(nodes/rtmp): address review round 2 feedback
streamkit-devin Apr 6, 2026
74bad71
fix(nodes/rtmp): emit_failed on I/O errors + set TCP_NODELAY
streamkit-devin Apr 6, 2026
001e202
fix(nodes/rtmp): use recognized StopReason 'completed' instead of 'fi…
streamkit-devin Apr 6, 2026
dc6018c
fix(nodes/rtmp): support separate stream key + env var, fix sample pi…
streamkit-devin Apr 7, 2026
d87ad1b
fix(rtmp): use wall-clock timestamps for A/V sync, break on disconnect
streamkit-devin Apr 7, 2026
01f0457
fix(rtmp): use source-timestamp rebase instead of wall-clock for A/V …
streamkit-devin Apr 7, 2026
ceba6ef
style(rtmp): apply rustfmt formatting
streamkit-devin Apr 7, 2026
80bfe28
fix(rtmp): use range contains for clippy manual_range_contains
streamkit-devin Apr 7, 2026
a8835ba
fix(rtmp): drain ACKs after flush, fix TLS verifier, per-track metrics
streamkit-devin Apr 7, 2026
3eed82b
chore: update Cargo.lock for rustls-platform-verifier 0.6
streamkit-devin Apr 7, 2026
b81e7ad
fix(rtmp): use biased select + try_read for ACK drain
streamkit-devin Apr 7, 2026
6c65900
fix(rtmp): graceful TCP shutdown on exit, fix mask_stream_key
streamkit-devin Apr 7, 2026
4392ea6
fix(rtmp): override ACK window to prevent spurious disconnects
streamkit-devin Apr 7, 2026
0e2ef1c
fix(rtmp): override ACK window to prevent spurious disconnects
streamkit-devin Apr 7, 2026
abed134
fix(rtmp): use saturating_add for timestamp monotonicity guard
streamkit-devin Apr 7, 2026
f352e02
fix: gop
streamer45 Apr 7, 2026
b887b1e
fix(rtmp): address review feedback (connect timeout, AAC validation, …
streamkit-devin Apr 7, 2026
3a82781
style(rtmp): apply cargo fmt
streamkit-devin Apr 7, 2026
78f2d49
docs(rtmp): document Annex B parser limitation, set explicit gop_size
streamkit-devin Apr 7, 2026
132f26a
feat(rtmp): replace shiguredo_rtmp with custom sans-I/O RTMP publish …
streamkit-devin Apr 7, 2026
70fd90c
fix(rtmp): address code review findings
streamkit-devin Apr 7, 2026
cfc0f60
fix(rtmp): chunk decoder multi-chunk reassembly and MSRV compat
streamkit-devin Apr 7, 2026
fbd15c6
style(rtmp): apply rustfmt formatting to server simulation test
streamkit-devin Apr 7, 2026
0ef325e
docs(rtmp): default sample pipeline to rtmps, add Twitch URL
streamkit-devin Apr 7, 2026
cce13ff
fix(rtmp): update stale comment on multi-chunk decode behavior
streamkit-devin Apr 7, 2026
7d802d5
Merge branch 'main' into devin/1775576042-replace-shiguredo-rtmp
streamer45 Apr 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 13 additions & 10 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions crates/nodes/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,11 @@ ts-rs = { version = "12.0.1", optional = true }
# H.264 codec via Cisco's OpenH264 (optional, behind `openh264` feature)
openh264 = { version = "0.9", optional = true }

# RTMP publishing (optional, behind `rtmp` feature)
tokio-rustls = { version = "0.26", optional = true }
rustls = { version = "0.23", optional = true, default-features = false, features = ["std"] }
rustls-platform-verifier = { version = "0.6", optional = true }

# AV1 codec (optional, behind `av1` feature)
rav1e = { version = "0.8", optional = true, default-features = false, features = ["threading", "asm"] }
rav1d = { version = "1.1", optional = true, default-features = false, features = ["bitdepth_8", "bitdepth_16", "asm"] }
Expand Down Expand Up @@ -117,6 +122,7 @@ default = [
"video",
"mp4",
"openh264",
"rtmp",
]

# Individual features for each node.
Expand Down Expand Up @@ -148,6 +154,7 @@ symphonia = ["dep:symphonia", "dep:schemars"]
vp9 = ["dep:env-libvpx-sys", "dep:schemars"]
av1 = ["dep:rav1e", "dep:rav1d", "dep:schemars"]
openh264 = ["dep:openh264", "dep:schemars", "dep:serde_json"]
rtmp = ["dep:tokio-rustls", "dep:rustls", "dep:rustls-platform-verifier", "dep:schemars", "dep:serde_json"]
svt_av1 = ["dep:schemars", "dep:serde_json", "dep:pkg-config", "dep:cc"]
# svt_av1_static downloads + builds SVT-AV1 at compile time (no system install).
# Not in `default` to keep dev builds fast; enabled explicitly in Dockerfiles and
Expand Down
9 changes: 9 additions & 0 deletions crates/nodes/src/transport/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ pub mod http;
#[cfg(feature = "http")]
pub mod http_mse;

#[cfg(feature = "rtmp")]
mod rtmp_client;

#[cfg(feature = "rtmp")]
pub mod rtmp;

/// Registers all available transport nodes with the engine's registry.
pub fn register_transport_nodes(registry: &mut NodeRegistry) {
// Call the registration function from each submodule.
Expand All @@ -24,4 +30,7 @@ pub fn register_transport_nodes(registry: &mut NodeRegistry) {

#[cfg(feature = "http")]
http_mse::register_http_mse_nodes(registry);

#[cfg(feature = "rtmp")]
rtmp::register_rtmp_nodes(registry);
}
Loading
Loading