X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=README;h=46a943aba596035d641743b2bb504dad5b98ce7e;hb=refs%2Fheads%2Fmaster;hp=15913a180ecce80f881a1d9da8739a2a8b072864;hpb=3a1d58dee269fdca9cab7f482e4e8695b3fb2ffd;p=cubemap diff --git a/README b/README index 15913a1..46a943a 100644 --- a/README +++ b/README @@ -1,5 +1,4 @@ -Cubemap is a high-performance, high-availability video reflector, -specifically made for use with VLC. +Cubemap is a high-performance, high-availability video reflector. A short list of features: @@ -11,10 +10,12 @@ A short list of features: 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). + - Support for setting max pacing rate through the fq packet scheduler. - Reflects anything VLC can reflect over HTTP, even the muxes VLC - has problems reflecting itself (in particular, FLV). + has problems reflecting itself (in particular, FLV). Can also + call out to external programs to receive or fetch streams in arbitrary + ways (e.g. through SRT), although of course they do not necessarily + have the same intrinsic high-availability reconfiguration support. - 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) @@ -27,12 +28,23 @@ A short list of features: HOWTO: - sudo apt install libprotobuf-dev protobuf-compiler libsystemd-dev libtomcrypt-dev + sudo apt install libprotobuf-dev protobuf-compiler libsystemd-dev libtomcrypt-dev pkg-config autoconf + sudo apt install libavformat-dev libavutil-dev # Optional + autoreconf -I . ./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 +Cubemap does not in itself understand the format of video streams; +it requires HTTP input that is already delineated into headers and blocks, +so that it knows what parts of the stream to skip to clients that +connect after the stream has been. (The exception is self-synchronizing +streams with no headers, such as MPEG-TS. These can also be sent or +received over UDP) The input format is specific to Cubemap and is called +Metacube (technically, Metacube2, but Metacube1 is long gone and nothing +uses it anymore). Currently, you have three options to create Metacube +video streams: VLC, Nageru or FFmpeg with a hack. + +For VLC, 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}' @@ -40,8 +52,9 @@ access mux, like this: 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. +Nageru, my free video mixer, can also produce Metacube streams natively, +and so can its included transcoder/remuxer Kaeru. See the manual +at https://nageru.sesse.net/doc/ for more information. If you feel very adventurous, you can use LD_PRELOAD to load ffmpeg_metacube_hack.so into an FFmpeg-using binary. (This is