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.
-
WebRTCis fast, but it was too big project to implement from scratch.(For streaming, need to implement SDP, ICE, RTCP, RTP, etc..) -
WebCodecsprovide video/audio buffer directly. but, for understanding infrastructure, design from scratch without traditional technology is weired. -
SRTprovide streaming. but, as i understand, it just 1:1 MPEG2-TS transport. Don't provide streaming specific functions. -
RTMPis 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.)