1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//! Pure-Rust RTMP for oxideav — ingest + push.
//!
//! This crate lets callers:
//!
//! * **Accept** an incoming publisher ([`RtmpServer`]). One TCP
//! connection per publisher, blocking-thread-per-connection. Server
//! drives the RTMP handshake + connect + createStream + publish
//! handshake, then hands the consumer a [`PublishRequest`] carrying
//! the `app`, `stream_name`, `tc_url`, and `peer_addr` so the
//! consumer can verify the stream key / do whatever auth they want
//! before accepting. Accepted publishers become an [`RtmpSession`]
//! emitting audio / video / metadata packets.
//!
//! * **Push** an encoded stream out to a remote RTMP server
//! ([`RtmpClient`]). Dial an `rtmp://host[:port]/app/stream_name`
//! URL, run the client-side publish handshake, then call
//! `send_video` / `send_audio` / `send_metadata` with H.264 /
//! AAC payloads.
//!
//! The protocol pieces are reusable on their own —
//! [`amf`], [`chunk`], [`flv`], [`message`], [`handshake`] — for
//! callers who need an RTMP primitive the high-level API doesn't
//! expose yet.
//!
//! Out of scope for this release:
//!
//! * RTMPS (TLS). Consumers who need it can wrap our `Read + Write`
//! with rustls. We may add an `rtmps` feature later.
//! * RTMP play (downstream subscriber / upstream pull). Only publish
//! direction is implemented.
//! * AMF3, shared objects, RTMFP, RTMP Encrypted, and the Adobe
//! digest-verified handshake variant.
pub use ;
pub use ;
pub use ;
pub use ;