streamers / README.txt @ 21ca4b73
History | View | Annotate | Download (3.16 KB)
1 |
This is DumbStreamer, the dumb streamer! |
---|---|
2 |
As such, do not expect it to be smart... |
3 |
|
4 |
Here is a quick'n'dirty, informal, description about how to compile |
5 |
and test the thing (do not expect to find any information about what |
6 |
the dumb streamer is, or how it works. If you need such information, |
7 |
please drop me an email - luca.abeni@unitn.it): |
8 |
|
9 |
Ok, here we go... |
10 |
- To download the DumbStreamer |
11 |
git clone http://www.disi.unitn.it/~abeni/PublicGits/DumbStreamer.git |
12 |
- To compile it: |
13 |
cd DumbStreamer |
14 |
make prepare |
15 |
make |
16 |
You can type "make FFDIR=<path to an ffmpeg build>" to compile a version |
17 |
of the streamer with a minimal libav-based input module. |
18 |
You can type "make DEBUG=WhyNot" to compile a "debug" version of the |
19 |
dumb streamer (prints out a lot of crap and debug information, not really |
20 |
useful in practice unless you are trying to hunt a bug). |
21 |
You can type "make THREADS=YesPlease" to compile the multi-thread version |
22 |
of the streamer. Not tested with libav*. |
23 |
You can type "make GRAPES=<path to your grapes>" to use a different build |
24 |
of GRAPES |
25 |
- To test it: |
26 |
First, I suggest to test the non-libav-based version. It generates |
27 |
"fake" text chunks, which are useful for debugging |
28 |
1) build as above (make prepare; make) |
29 |
2) start a source: ./dumbstreamer -I lo |
30 |
3) in a different shell, start a client: ./dumbstreamer -I lo -P 5555 -i 127.0.0.1 -p 6666 |
31 |
4) start another client: ./dumbstreamer -I lo -P 5556 -i 127.0.0.1 -p 6666 |
32 |
5) ... |
33 |
Explanation: "-P <port>" is the local port used by the client (6666 by |
34 |
default). Since I am testing source and multiple clients on the same |
35 |
machine, every client has to use a different port number. "-i <IP addr>" |
36 |
is the source IP, and "-p <port>" is the port number used by the source. |
37 |
After this testing, I suggest recompiling with debug on, and with threads. |
38 |
Test as above, and enjoy. |
39 |
- To see something interesting: |
40 |
You have to build a libav-based version: |
41 |
1) cd /tmp; svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg |
42 |
2) cd ffmpeg; ./configure; make -j 3; cd .. |
43 |
3) git clone http://www.disi.unitn.it/~abeni/PublicGits/DumbStreamer.git |
44 |
4) cd DumbStreamer; make prepare; make FFDIR=/tmp/ffmpeg |
45 |
Now, prepare a (video-only) input file: |
46 |
5) /tmp/ffmpeg -i <whatever.avi> -r 25 -an -vcodec mpeg4 -f m4v test.m4v |
47 |
6) The input currently needs to be called "input.mpg", so |
48 |
ln -s test.m4v input.mpg |
49 |
Start the source. For the moment, you need to manually specify the rate |
50 |
(will be fixed in the future): |
51 |
7) ./dumbstreamer -I lo -t 40 -c 50 |
52 |
create a FIFO for the output, and attach a player to it: |
53 |
8) mkfifo out; ffplay out |
54 |
start a client: |
55 |
9) ./dumbstreamer -I lo -P 5555 -p 6666 -i 127.0.0.1 > out |
56 |
- Enjoy... ;-) |
57 |
|
58 |
A lot of cleanup is needed, and the input module is still far from being |
59 |
reasonable (but this is not our business ;-) |
60 |
But you can now enjoy some video... |
61 |
|
62 |
Remember! The DumbStreamer is dumb! Peers try to send chunks to the source... |
63 |
Scheduling is blind... |
64 |
All of this is very bandwidth inefficient. If you want to start more clients, |
65 |
please increase the upload bandwidth of the source (dumbstreamer -t 40 -c 200, |
66 |
or even more...). |
67 |
|
68 |
|
69 |
Enjoy your streaming, |
70 |
Luca |