X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=README;h=01adb4e5be2562137cebd02eb18889567333f96a;hb=e67666da69e6d68072173a256f3388383dced013;hp=179e97fe89304c5d4421f331b3ba6019ab783603;hpb=05db5353c5d4654213dcc9af511a46b480874e8d;p=nageru diff --git a/README b/README index 179e97f..01adb4e 100644 --- a/README +++ b/README @@ -11,9 +11,10 @@ Features: for intermediate calculations, dithered output. - Proper sound support: Syncing of multiple unrelated sources through - high-quality resampling, freely selectable input, cue out for headphones, - dynamic range compression, simple EQ (lowpass), level meters conforming - to EBU R128. + high-quality resampling, multichannel mixing with separate effects + per-bus, cue out for headphones, dynamic range compression, + three-band graphical EQ (pluss a fixed low-cut), level meters conforming + to EBU R128, automation via MIDI controllers. - Theme engine encapsulating the design demands of each individual event; Lua code is responsible for setting up the pixel processing @@ -33,48 +34,61 @@ Nageru is in beta stage. It currently needs: DRM instead of X11, to use a non-Intel GPU for rendering but still use Quick Sync (by giving e.g. “--va-display /dev/dri/renderD128”). - - Two or more Blackmagic USB3 cards, either HDMI or SDI. These are driven - through the “bmusb” driver embedded in bmusb/, using libusb-1.0. - Note that you will want a recent Linux kernel to avoid LPM (link power - management) and bandwidth allocation issues with USB3. + - Two or more Blackmagic USB3 or PCI cards, either HDMI or SDI. + The PCI cards need Blackmagic's own drivers installed. The USB3 cards + are driven through the “bmusb” driver, using libusb-1.0. If you want + zerocopy USB, you need libusb 1.0.21 or newer, as well as a recent + kernel (4.6.0 or newer). Zerocopy USB helps not only for performance, + but also for stability. You need at least version 0.7.0. - Movit, my GPU-based video filter library (https://movit.sesse.net). - You will need at least version 1.3.0. + You will need at least version 1.5.2. - Qt 5.5 or newer for the GUI. + - QCustomPlot for the histogram display in the frame analyzer. + - libmicrohttpd for the embedded web server. - - ffmpeg for muxing, and for encoding audio. + - x264 for encoding high-quality video suitable for streaming to end users. + + - ffmpeg for muxing, and for encoding audio. You will need at least + version 3.1. - Working OpenGL; Movit works with almost any modern OpenGL implementation. - Nageru has been tested with Intel on Mesa 10.x and 11.x (you probably want - 11.x), and with NVIDIA's proprietary drivers. AMD's proprietary drivers - (fglrx) are known not to work due to driver bugs; I am in contact with - AMD to try to get this resolved. + Nageru has been tested with Intel on Mesa (you want 11.2 or newer, due + to critical stability bugfixes), and with NVIDIA's proprietary drivers. + AMD's proprietary drivers (fglrx) are known not to work due to driver bugs; + I am in contact with AMD to try to get this resolved. - libzita-resampler, for resampling sound sources so that they are in sync between sources, and also for oversampling for the peak meter. - Lua, for driving the theme engine. + - libpci, for printing friendly PCI device names in an error message. + If on Debian stretch or something similar, you can install everything you need with: - git submodule update --init - apt install qtbase5-dev qt5-default pkg-config libmicrohttpd-dev \ - libusb-1.0-0-dev liblua5.2-dev libzita-resampler-dev libva-dev \ - libavcodec-dev libavformat-dev libswscale-dev libmovit-dev \ - libegl1-mesa-dev libasound2-dev + apt install qtbase5-dev libqt5opengl5-dev qt5-default libqcustomplot-dev \ + pkg-config libmicrohttpd-dev libusb-1.0-0-dev liblua5.2-dev \ + libzita-resampler-dev libva-dev libavcodec-dev libavformat-dev \ + libswscale-dev libavresample-dev libmovit-dev libegl1-mesa-dev \ + libasound2-dev libx264-dev libbmusb-dev protobuf-compiler \ + libprotobuf-dev libpci-dev + +Exceptions as of July 2017: + - You will need Movit from git; stretch only has 1.4.0. -The patches/ directory contains some patches for upstream software that help -Nageru performance and/or stability. They are all meant for upstream, but -probably will not be in by the time Nageru is released. All except the bmusb -patch are taken to be by Steinar H. Gunderson (ie., my work -email, unlike Nageru itself and bmusb), and under the same license as the -projects they patch. + - You will need bmusb from experimental; stretch only has 0.5.4. + +The patches/ directory contains a patch that helps zita-resampler performance. +It is meant for upstream, but was not in at the time Nageru was released. +It is taken to be by Steinar H. Gunderson (ie., my ex-work +email), and under the same license as zita-resampler itself. To start it, just hook up your equipment, type “make” and then “./nageru”. It is strongly recommended to have the rights to run at real-time priority; @@ -85,12 +99,32 @@ are running a desktop compositor, it will steal significant amounts of GPU performance. The same goes for PulseAudio. Nageru will open a HTTP server at port 9095, where you can extract a live -H264+PCM signal in QuickTime mux (e.g. http://127.0.0.1:9095/stream.mov). +H264+PCM signal in nut mux (e.g. http://127.0.0.1:9095/stream.nut). It is probably too high bitrate (~25 Mbit/sec depending on content) to send to users, but you can easily send it around in your internal network and then transcode it in e.g. VLC. A copy of the stream (separately muxed) will also be saved live to local disk. +If you have a fast CPU (typically a quadcore desktop; most laptops will spend +most of their CPU on running Nageru itself), you can use x264 for the outgoing +stream instead of Quick Sync; it is much better quality for the same bitrate, +and also has proper bitrate controls. Simply add --http-x264-video on the +command line. (You may also need to add something like "--x264-preset veryfast", +since the default "medium" preset might be too CPU-intensive, but YMMV.) +The stream saved to disk will still be the Quick Sync-encoded stream, as it is +typically higher bitrate and thus also higher quality. Note that if you add +".metacube" at the end of the URL (e.g. "http://127.0.0.1:9095/stream.ts.metacube"), +you will get a stream suitable for streaming through the Cubemap video reflector +(cubemap.sesse.net). A typical example would be: + + ./nageru --http-x264-video --x264-preset veryfast --x264-tune film \ + --http-mux mp4 --http-audio-codec libfdk_aac --http-audio-bitrate 128 + +If you are comfortable with using all your remaining CPU power on the machine +for x264, try --x264-speedcontrol, which will try to adjust the preset +dynamically for maximum quality, at the expense of somewhat higher delay. + +See --help for more information on options in general. The name “Nageru” is a play on the Japanese verb 投げる (nageru), which means to throw or cast. (I also later learned that it could mean to face defeat or @@ -102,7 +136,7 @@ contact information and link to the latest version. Legalese: TL;DR: Everything is GPLv3-or-newer compatible, and see -Intel's copyright license at h264encode.h. +Intel's copyright license at quicksync_encoder.h. Nageru is Copyright (C) 2015 Steinar H. Gunderson . @@ -127,7 +161,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . -Portions of h264encode.h and h264encode.cpp: +Portions of quicksync_encoder.h and quicksync_encoder.cpp: Copyright (c) 2007-2013 Intel Corporation. All Rights Reserved.