Erlang RTMP server
Pull request Compare This branch is 560 commits ahead, 4 commits behind windock:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


erlyvideo is a flash streaming server, written in erlang:
Repo moved to

currently it can:

  * stream, seek, pause and resume mp4 and flv files 
  * fast starting of flv playback with building index in background
  * record flv from camera
  * have possibility to auth users
  * broadcast flv between people
  * provide push channel to flash, just like juggernaut, just like AMQP (look doc/push.edoc)
  * read MPEG TS and restream it to flash clients.
  * handle different types of authorization. Look at json_session for example of authorization
  * both AMF0 and AMF3 encoding are possible
  * got support for many netstreams. It mean, that videoconference is possible.
  * support virtual hosts. Look at priv/ for examples
  * save last GOP of incoming stream, so that client can start looking video much faster
  * Can stream from QuickTime Broadcaster and Wirecast via RTSP/RTP. Read more in doc/rtsp.edoc

currently in development:
  * improve handling of background vlc/ffmpeg for them to recode uploaded videos
  * add support for extended play command (with initial seek, length, ets)

future plans:
  * MPEG TS restreaming of files
  * Apple HTTP LiveStreaming
  * Source authorization (RTSP, MPEG TS, etc.)
  * Shared Objects
  * try to change quality on fly (smooth streaming)
  * capture mpeg4 IP cameras
  * raw RTP capture from sdp file

What you can do right now?

  * use it for streaming flv and mp4 files
  * use it as a replacement for long-poll push channels
  * use it as a recorder of video camera
  * use it with longtailvideo player

How can You help?
  * Launch it and test on your content;
  * make fork on github, add your improvements and push them to me;
  * take any of “currently in development” issues or future plans and try to make them

How to launch:

  * git clone git://
  * cd erlyvideo
  * git submodule init
  * git submodule update
  * cp priv/erlmedia.conf.sample priv/erlmedia.conf
  * $EDITOR ebin/erlmedia.conf
  * change /tmp to /Users/username/Movies
  * make
  * make run
  * open http://localhost:8082
  * click on any flv/mp4 file and then press Play
  * change any erlang code
  * type ems:rebuild() in console
  * profit!

How to hack and add features:

  * read doc/hacking.edoc
  * add plugin

Plugin structure:

  * Look at src/apps_streaming.erl
  * You should define and export functions, that will be available to flash. Format is  FunctionName(AMF, State). Reply is State.
  * To handle events to client runloop, add 'WAIT_FOR_DATA'(Message, State) function, which should respond in the same way as OTP handler.