c3175167d742928b2c454662b6cbb5f4faa11bfb
[cubemap] / README
1 Cubemap is a high-performance, high-availability video reflector,
2 specifically made for use with VLC. It is currently in alpha stage.
3
4 A short list of features:
5
6  - High-performance, through a design with multiple worker threads,
7    epoll and sendfile (yes, sendfile); a 2GHz quadcore can saturate
8    10 gigabit Ethernet, given a modern kernel, a modern NIC
9    and the right kernel tuning.
10  - High-availability. You can change any part of the configuration
11    (and even upgrade to a newer version of Cubemap) by changing cubemap.config
12    and sending a SIGHUP; all clients will continue as if nothing had happened
13    (unless you delete the stream they are watching, of course).
14    Cubemap also survives the encoder dying and reconnecting.
15  - Per-stream fwmark support, for TCP pacing through tc (separate config needed).
16  - Reflects anything VLC can reflect over HTTP, even the muxes VLC
17    has problems reflecting itself (in particular, FLV).
18  - IPv4 support. Yes, Cubemap even supports (some) legacy protocols.
19
20
21 HOWTO:
22
23   sudo aptitude install libprotobuf-dev protobuf-compiler
24   make -j4
25
26 If you want to use HTTP input (you probably want to), patch VLC with the
27 included file vlc-metacube.diff. Then start the VLC encoder with the
28 “metacube” flag to the http access mux, like this:
29
30   cvlc [...] --sout '#std{access=http{metacube,mime=video/x-flv},mux=flv,dst=:4013/test.flv}'
31
32 Then look through cubemap.config.sample, copy it to cubemap.config,
33 compile and start cubemap.
34
35 To upgrade cubemap (after you've compiled a new binary), or to pick up new
36 config:
37
38   killall -HUP cubemap
39
40 Cubemap will serialize itself to disk, check that the new binary and config
41 are OK, and then exec() the new version, which deserializes everything and
42 keeps going.
43
44
45 Munin plugins:
46
47 These can be dropped directly into /etc/munin/plugins. If you don't put
48 the files in the expected default locations, you probably want some
49 configuration in /etc/munin/plugin-conf.d/cubemap or similar, like this:
50
51 [cubemap*]
52 user <something>
53 env.cubemap_config /etc/cubemap/cubemap.config
54 env.cubemap_stats /var/lib/cubemap/cubemap.stats
55 env.cubemap_input_stats /var/lib/cubemap/cubemap-input.stats
56
57
58 Legalese: 
59
60 Copyright 2013 Steinar H. Gunderson <sgunderson@bigfoot.com>.
61 Licensed under the GNU GPL, version 2. See the included COPYING file.