diff --git a/profile/README.md b/profile/README.md index a6bc4f9..1f43f0f 100644 --- a/profile/README.md +++ b/profile/README.md @@ -19,7 +19,7 @@ The project is split into focused, reusable components: - **[librtmp2-server-panel](https://github.com/OpenRTMP/librtmp2-server-panel)** β€” Web management panel - **[.github](https://github.com/OpenRTMP/.github)** β€” Organization documentation and CI/CD -> **Note:** `librtmp2` and `librtmp2-server` are both Rust today, but they are separate codebases β€” `librtmp2-server` does not yet depend on the `librtmp2` crate for its RTMP listener. See [Architecture](#architecture) below. +> **Note:** `librtmp2` and `librtmp2-server` are both Rust today, and separate codebases β€” `librtmp2-server` depends on the `librtmp2` crate to drive its RTMP/RTMPS listener. See [Architecture](#architecture) below. --- @@ -56,12 +56,12 @@ A media server written in **Rust** (axum + rusqlite) that owns everything around - πŸ“Š JSON and Nginx-compatible XML stats endpoints - πŸ”Œ REST API for stream management (Bearer token auth) - 🐳 Docker-ready with Alpine base -- ⚠️ **In progress:** the RTMP/E-RTMP wire protocol (the `librtmp2` crate) is not yet wired into the server's listener β€” see [`src/server.rs`](https://github.com/OpenRTMP/librtmp2-server/blob/main/src/server.rs) +- πŸ”Œ RTMP/E-RTMP wire protocol powered by the `librtmp2` crate, wired into the server's listener β€” see [`src/server.rs`](https://github.com/OpenRTMP/librtmp2-server/blob/main/src/server.rs) **Perfect for:** -- Private streaming infrastructure (once protocol integration lands) +- Private streaming infrastructure - Stream key/stats/API tooling around an RTMP deployment -- Contributors interested in finishing the `librtmp2` integration +- Contributors interested in extending the `librtmp2` integration --- @@ -88,7 +88,7 @@ A lightweight Flask web panel for managing librtmp2-server. Create streams, moni ## Architecture -`librtmp2` and `librtmp2-server` are both Rust, but independent codebases today β€” the server does not yet depend on the `librtmp2` crate for its RTMP listener. +`librtmp2` and `librtmp2-server` are both Rust, independent codebases β€” `librtmp2-server` depends on the `librtmp2` crate to drive its RTMP/RTMPS listener. ```text β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” @@ -97,15 +97,15 @@ A lightweight Flask web panel for managing librtmp2-server. Create streams, moni β”‚ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” - β”‚ librtmp2 (Rust) β”‚ β”‚ librtmp2-server (Rust) β”‚ + β”‚ librtmp2 (Rust) │─────▢│ librtmp2-server (Rust) β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ Handshake β”‚ β”‚ HTTP API (axum) β”‚ β”‚ Chunking β”‚ β”‚ SQLite persistence β”‚ β”‚ AMF 0/3 β”‚ β”‚ Stream keys / stats β”‚ - β”‚ Commands β”‚ β”‚ RTMP listener: pending, β”‚ - β”‚ E-RTMP v1/v2 β”‚ β”‚ blocked on librtmp2 β”‚ - β”‚ RTMPS (TLS) β”‚ β”‚ crate integration β”‚ - β”‚ extern "C" FFI β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + β”‚ Commands β”‚ β”‚ RTMP/RTMPS listener β”‚ + β”‚ E-RTMP v1/v2 β”‚ β”‚ (via librtmp2 crate) β”‚ + β”‚ RTMPS (TLS) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + β”‚ extern "C" FFI β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β–² β”‚ @@ -137,7 +137,7 @@ cargo build --release ./target/release/librtmp2-server -c config.example.env ``` -See [librtmp2-server README](https://github.com/OpenRTMP/librtmp2-server#build) for configuration and deployment. Note: RTMP ingest is not yet live β€” see the Architecture section above. +See [librtmp2-server README](https://github.com/OpenRTMP/librtmp2-server#build) for configuration and deployment. RTMP/RTMPS ingest runs via the embedded `librtmp2` crate β€” see the Architecture section above. ### Using librtmp2-server-panel (Web Panel) @@ -157,7 +157,7 @@ See [librtmp2-server-panel README](https://github.com/OpenRTMP/librtmp2-server-p | Use Case | Solution | |----------|----------| | **OBS/FFmpeg Plugin** | Use `librtmp2` (Rust, FFI-compatible) to add RTMP ingest support from any language | -| **Private RTMP Relay** | Build on `librtmp2`; `librtmp2-server` is not yet protocol-capable | +| **Private RTMP Relay** | Build on `librtmp2` directly, or run `librtmp2-server`, which embeds it | | **Stream Key / Stats / API Tooling** | Use `librtmp2-server` for its HTTP API, SQLite persistence, and key management | | **Broadcast Tool** | Use `librtmp2` for protocol handling, focus on your unique logic | | **Protocol Research** | Study the reference implementation in `librtmp2` | @@ -241,8 +241,8 @@ All OpenRTMP projects are licensed under the **MIT License** β€” free to use, mo - [ ] Performance benchmarks and optimization ### librtmp2-server -- [ ] Wire the `librtmp2` crate into the server listener (live ingest/playback) -- [ ] RTMPS listener (depends on the above) +- [x] Wire the `librtmp2` crate into the server listener (live ingest/playback) +- [x] RTMPS listener - [ ] Load balancing and clustering ---