Skip to content

Latest commit

 

History

History
45 lines (36 loc) · 2 KB

README.md

File metadata and controls

45 lines (36 loc) · 2 KB

The implementation of RTMP Protocol in Rust

For practice

  • Reading specifications
  • Writing article
  • Rust Programing language
  • Understanding streaming infrastructure

Why Rust?

  • 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.

Why RTMP?

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)

TODO

  • 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.)

References