For practice
- Reading specifications
- Writing article
- Rust Programing language
- Understanding streaming infrastructure
- The primary reason is, reusability.
Most of the programming languages that used in server-side offer native interfaces. And, Rust support wasm. So, i thought writing protocol processing library in rust can be reusing in next steps.
RTMP
is traditional, but widely using in these days.
-
WebRTC
is fast, but it was too big project to implement from scratch.(For streaming, need to implement SDP, ICE, RTCP, RTP, etc..) -
WebCodecs
provide video/audio buffer directly. but, for understanding infrastructure, design from scratch without traditional technology is weired. -
SRT
provide streaming. but, as i understand, it just 1:1 MPEG2-TS transport. Don't provide streaming specific functions. -
RTMP
is designed partialy reusable.
an application-level protocol designed for multiplexing and packetizing multimedia transport streams (such as audio, video, and interactive content) over a suitable transport protocol (such as TCP).
While RTMP was designed to work with the RTMP Chunk Stream, it can send the messages using any other transport protocol.
And, Full version of RTMP
specification is not exist...
It means much things can be writing...(Practice writing article)
- Accept incoming RTMP live stream
- Handshake: Basic (5.2. Handshake)
- Define RTMP context
- Chunking (5.3. Chunking)
- Protocol Control Message (5.4. Protocol Control Messages)
- RTMP Message (6. RTMP Message Formats)
- AMF0
- RTMP Command Messages (7. RTMP Command Messages)
- Undocumented specifications(ex. FCPublish, releaseStream, etc.)