X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=README;h=006d8088a6aed052665268b41da5e2fa2ec5ee2f;hb=36229242c91251fc81decf5b0d6f405b50c92244;hp=179e97fe89304c5d4421f331b3ba6019ab783603;hpb=05db5353c5d4654213dcc9af511a46b480874e8d;p=nageru diff --git a/README b/README index 179e97f..006d808 100644 --- a/README +++ b/README @@ -12,7 +12,7 @@ Features: - 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 + dynamic range compression, simple EQ (low-cut), level meters conforming to EBU R128. - Theme engine encapsulating the design demands of each individual @@ -33,25 +33,28 @@ 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 embedded in bmusb/, using libusb-1.0. + You want a recent kernel and libusb-1.0; see below. - 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.3.1. - Qt 5.5 or newer for the GUI. - libmicrohttpd for the embedded web server. + - x264 for encoding high-quality video suitable for streaming to end users + (but see below). + - ffmpeg for muxing, and for encoding audio. - 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. @@ -65,16 +68,24 @@ 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 + libavcodec-dev libavformat-dev libswscale-dev libavresample-dev \ + libmovit-dev libegl1-mesa-dev libasound2-dev libx264-dev + +Exceptions as of June 2016: + + - You need libusb 1.0.21 or newer (not yet released; you will need to + use git) if you want zerocopy USB. Zerocopy USB helps not only for + performance, but also for stability. + + - You want kernel 4.6.0 or newer to get zerocopy USB. Older kernels + also lack some workarounds for LPM (link power management) and bandwidth + allocation issues with USB3. -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. +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 +96,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. Simple 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