This repository has been archived by the owner on Feb 21, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 47
/
Copy pathREADME
60 lines (43 loc) · 1.82 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
erlyvideo is a flash streaming server, written in erlang.
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)
currently in development:
* good recording from flash camera. Currently there are problems.
* improve handling of background vlc/ffmpeg for them to recode uploaded videos
* reading of MPEG TS. It may be required for streaming and recording from video cameras
future plans:
* try to change quality on fly
* RTSP/RTP to read from QuickTime Broadcaster
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.
How to launch:
* git clone git://github.com/maxlapshin/erlyvideo.git
* cd erlyvideo
* cp src/erlmedia.app ebin/erlmedia.app
* $EDITOR ebin/erlmedia.app
* 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.