Releases: OpenRTMP/librtmp2
Releases · OpenRTMP/librtmp2
Release list
librtmp2 0.1.0
First tagged pre-release. librtmp2 is a Rust crate (built via Cargo as
cdylib/staticlib/lib) exposing both an idiomatic Rust API and an
FFI-compatible extern "C" layer for consumption from C, Go, Python, PHP,
and others.
Added
- TLS / RTMPS support via OpenSSL, enabled by default through the
tls
Cargo feature (cargo build --no-default-featuresfor a zero-dependency,
plaintext-only build) - Transport abstraction shared by plaintext RTMP and TLS so the layers above
never branch on the wire type - Server-side TLS termination and client-side
rtmps://connect with SNI
and certificate verification lrtmp2_tls_supported()runtime capability check- Legacy RTMP protocol support (handshake, chunk, message, AMF0)
- Enhanced RTMP v1 support (ExVideo/ExAudio headers, FourCC registry, HDR/colorInfo)
- Enhanced RTMP v2 support (capsEx, reconnect, multitrack, ModEx)
- Full server API with callbacks (
on_connect,on_publish,on_play,on_frame,on_close) - Full client API with publish/play flows
- Frame API supporting audio, video, script, and metadata types
- H.264, H.265, AV1, and legacy video codec support
- AAC, Opus, MP3, G.711 audio codec support
- Example programs:
minimal_server,minimal_client,play_pull,ffmpeg_ingest - Inline unit tests throughout
src/, an end-to-end loopback integration
test (tests/server_client_loopback.rs), and interop shell scripts
(tests/interop/) - ABI baseline tooling (
scripts/abi-baseline.sh) for0.xcompatibility checks - Automated ABI compliance checks in CI (
cargo-semver-checksvia.github/workflows/abi-check.yml)
Security
- Bounds-checked parsers for all network-provided length fields
- Constant-time RNG for handshake
- Safe handling of unknown E-RTMP v2 ModEx types (degrades to NOP, not panic)
Documentation
CLAUDE.mdwith build commands and architecture guidedocs/abi-policy.mdwith ABI compliance checklist- Protocol mapping documents for legacy, E-RTMP v1, and E-RTMP v2
CONTRIBUTING.mdguidelines