SoC 2009/RTMP Flash Streaming

From VideoLAN Wiki
Jump to navigation Jump to search
This project is part of Google Summer of Code 2009.
Student: Zhigang Wang
Mentor: Remi Denis-Courmont

RTMP Streaming


This project is about to implement the RTMP Streaming function for VLC media player. It includes RTMP input and output functions (Fix bugs in RTMP input module and total rewrite the RTMP output module). when Adobe is about to publish the RTMP protocol spec in the first half of this year, It's the time to do this job.


Before May 23:

  • Read more RTMP protocal documents.

May 23 - July 5:

  • RTMP input works half of the time.
    • Fix bug and improve AMF/RTMP message decoder and encoder (I already found it will segment fault in function rtmp_handler_invoke() of modules/access/rtmp/rtmp_amf_flv.c). The source code of gnash project can be referenced to.
    • Fix other bugs in RTMP input.
    • Pause/Seek/Resume support (Input).
  • VLC can stream FLV over HTTP.
    • FLV Encapsulation over HTTP is not work.
    • FIX: MPEG-TS Encapsulation over HTTP with FLV file, the Video can not streaming(Audio Only)

July 6 - July 13:

  • Mid-term evaluations, Review the function I had implement, and fix the bug which had found.

July 14 - August 9:

  • Possibly rewrite from scratch RTMP output (never worked).
    • Totally rewrite the RTMP access output module work flow (Reference to the existed HTTP access output module implement), make the RTMP access output module can listen and handle concurrent requests.
    • Make RTMP access output module successfully handshake with flashplayer.
    • After flashplayer can successfully handshake and invoke connect -> createStream -> play with our RTMP access output module, make sure sending the right packed flv video to flashplayer (Base on the existed source code and this doc:
    • Pause/Seek/Resume support (output)

August 10 - August 25:

  • code review and testing. Fix bugs if necessary.

September 3 - September 9:

  • Submitting required code samples to Google


May 23 - May 29:

  • Check packet boundary to avoid "segment fault"
  • Improve AMF message decoding
  • Minor modification to RTMP connect action
  • Add seek function. (Not work yet)

May 30 - Jule 5 (TODO):

  • RTMP SEEK function
  • Check other possible bug and fix

Source Code

You can git clone using http from

$ git clone

More Information: [1]


Reference projects:

Reference documents: