X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=README;h=e9520d3aec889da9e53f9bad82f69352024080c3;hp=06c1c644b91ec555d190838e8d440e5d2b3329a7;hb=0229f4414b3b63934c057030deb88cbf6926bb1f;hpb=32d84e70aa1f1c9cd8334aceac0a617b4a7b4b40 diff --git a/README b/README index 06c1c64..e9520d3 100644 --- a/README +++ b/README @@ -1,7 +1,91 @@ -Cubemap is a high-performance, high-availaility video reflector, +Cubemap is a high-performance, high-availability video reflector, specifically made for use with VLC. -Copyright 2013 Steinar H. Gunderson . -Licensed under the GNU GPL, version 2. +A short list of features: -More information to come here, later. :-) + - High-performance, through a design with multiple worker threads, + epoll and sendfile (yes, sendfile); a 2GHz quadcore can saturate + 10 gigabit Ethernet (even with TLS) given a modern kernel. + - High-availability. You can change any part of the configuration + (and even upgrade to a newer version of Cubemap) by changing cubemap.config + and sending a SIGHUP; all clients will continue as if nothing had happened + (unless you delete the stream they are watching, of course). + Cubemap also survives the encoder dying and reconnecting. + - Support for setting max pacing rate through the fq packet scheduler + (depends on Linux 3.13 or newer). + - Reflects anything VLC can reflect over HTTP, even the muxes VLC + has problems reflecting itself (in particular, FLV). + - Multicast support, both for sending and receiving (supports only protocols + that can go over UDP, e.g. MPEG-TS). Supports both ASM and SSM. + - TLS output support, through the TLSe library (requires libtomcrypt) + and the Linux kernel's kTLS (Linux 4.17 or newer). There are a few + limitations; see below. + - fMP4 (HLS) output support, generating playlists on-the-fly. Note that this + requires some extra metadata currently only set by Nageru (not VLC). + - IPv4 support. Yes, Cubemap even supports (some) legacy protocols. + + +HOWTO: + + sudo apt install libprotobuf-dev protobuf-compiler libsystemd-dev libtomcrypt-dev + ./configure + make -j4 + +If you want to use HTTP input (you probably want to), you want VLC 2.2.0 +or newer. Then start the VLC encoder with the “metacube” flag to the http +access mux, like this: + + cvlc [...] --sout '#std{access=http{metacube,mime=video/x-flv},mux=flv,dst=:4013/test.flv}' + +Then look through cubemap.config.sample, copy it to cubemap.config, +compile and start cubemap. + +Nageru, my free video mixer, can also produce Metacube streams natively. +See the manual at https://nageru.sesse.net/doc/ for more information. + +To upgrade cubemap (after you've compiled a new binary), or to pick up new +config: + + killall -HUP cubemap + +Cubemap will serialize itself to disk, check that the new binary and config +are OK, and then exec() the new version, which deserializes everything and +keeps going. + + +Notes on TLS support: + +Cubemap supports TLS on output, so that you can play video on TLS +web sites without issues with mixed content. TLS on input streams is +not (yet) supported. + +TLS requires kTLS for both send and receive, ie., Linux >= 4.17 with CONFIG_TLS +enabled. Only cipher suites supported by kTLS is supposed, ie., AES-128-GCM +(if no such cipher suite is available, the connection will be aborted). If the +server is restarted before the key exchange for a connection is completed, +that connection will not survive the restart, unlike all other connections. +(This is a TLSe limitation.) You can have different certificates on different +ports (and have separate ports for TLS and non-TLS), but SNI is not yet +supported. + + +Munin plugins: + +To activate these, symlink them into /etc/munin/plugins. If you don't put +the files in the expected default locations (as done by 'make install'), +you probably want some configuration in /etc/munin/plugin-conf.d/cubemap or +similar, like this: + +[cubemap*] +user +env.cubemap_config /etc/cubemap/cubemap.config +env.cubemap_stats /var/lib/cubemap/cubemap.stats +env.cubemap_input_stats /var/lib/cubemap/cubemap-input.stats + + +Legalese: + +Copyright 2013 Steinar H. Gunderson . +Licensed under the GNU GPL, version 2. See the included COPYING file. + +See tlse/LICENSE for TLSe licensing.