]> git.sesse.net Git - nageru/blobdiff - README
Set CEF autoplay policy to be more lenient.
[nageru] / README
diff --git a/README b/README
index 7fb863ee5fa3f4184e939e5a50eb7f0f63e92636..60a67c73e30e582821f81189c1ca63466060563f 100644 (file)
--- a/README
+++ b/README
@@ -1,7 +1,8 @@
 Nageru is a live video mixer, based around the standard M/E workflow.
+Futatabi is a multicamera slow motion video server.
 
 
-Features:
+Nageru features:
 
  - High performance on modest hardware (720p60 with two input streams
    on my Thinkpad X240[1]); almost all pixel processing is done on the GPU.
@@ -22,6 +23,9 @@ Features:
    pipelines, running transitions etc., so that the visual look is
    consistent between operators.
 
+ - HTML rendering (through Chromium Embedded Framework), for high-quality
+   and flexible overlay or other graphics.
+
  - Comprehensive monitoring through Prometheus metrics.
 
 [1] For reference, that is: Core i7 4600U (dualcore 2.10GHz, clocks down
@@ -30,70 +34,104 @@ to 800 MHz after 30 seconds due to thermal constraints), Intel HD Graphics
 (so 12.8 GB/sec theoretical memory bandwidth, shared between CPU and GPU).
 
 
-Nageru is in beta stage. It currently needs:
-
- - An Intel processor with Intel Quick Sync, or otherwise some hardware
-   H.264 encoder exposed through VA-API. Note that you can use VA-API over
-   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”).
+Nageru currently needs:
 
- - Two or more Blackmagic USB3 or PCI cards, either HDMI or SDI.
+ - Some sort of video capture cards; typically two or more Blackmagic USB3
+   or PCI cards, either HDMI or SDI (V4L2 is not generally supported).
    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.
+   are driven through the “bmusb” driver, using libusb-1.0.
 
  - Movit, my GPU-based video filter library (https://movit.sesse.net).
    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.
 
  - 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.
+ - FFmpeg for muxing, and for encoding audio. You will need at least
+   version 5.1.
 
  - Working OpenGL; Movit works with almost any modern OpenGL implementation.
-   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.
+   Nageru has been tested with Intel on Mesa, and with NVIDIA's proprietary drivers.
+   The status of AMD's proprietary drivers is currently unknown.
 
  - 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.
+ - LuaJIT, for driving the theme engine. You will need at least version 2.1.
+
+ - libjpeg, for encoding MJPEG streams when VA-API JPEG support is not
+   available.
+
+ - Protocol Buffers (protobuf), for storing various forms of settings and
+   state.
+
+ - Meson, for building.
+
+ - Optional: CEF (Chromium Embedded Framework), for HTML graphics.
+   If you build without CEF, the HTMLInput class will not be available from
+   the theme. You can get binary downloads of CEF from
+
+     http://opensource.spotify.com/cefbuilds/index.html
+
+   Simply download the right build for your platform (the “minimal” build
+   is fine) and add -Dcef_dir=<path>/cef_binary_X.XXXX.XXXX.XXXXXXXX_linux64
+   on the meson command line (substituting X with the real version as required).
+
+ - Optional: libsrt, for SRT inputs (by default, Nageru will listen on
+   port 9710, although you can change this port on the command line,
+   turn it off with --srt-port -1, or turn it off live in the UI).
+   SRT can also be used for output in addition to listening for HTTP
+   (see --srt-destination). If you build with libsrt, make sure it is not
+   linked to OpenSSL, for license reasons.
 
- - libpci, for printing friendly PCI device names in an error message.
+ - Optional: SVT-AV1, for encoding high-quality video suitable for streaming to
+   end users (higher quality than using x264, but not nearly as mature).
+   You will need at least version 1.5.0.
 
 
-If on Debian stretch or something similar, you can install everything you need
+Futatabi also needs:
+
+ - A fast GPU with OpenGL 4.5 support (GTX 1080 or similar recommended for
+   best quality at HD resolutions, although 950 should work).
+
+ - SQLite, for storing state.
+
+
+If on Debian bullseye or something similar, you can install everything you need
 with:
 
-  apt install qtbase5-dev libqt5opengl5-dev qt5-default libqcustomplot-dev \
-    pkg-config libmicrohttpd-dev libusb-1.0-0-dev liblua5.2-dev \
+  apt install qtbase5-dev libqt5opengl5-dev qt5-default \
+    pkg-config libmicrohttpd-dev libusb-1.0-0-dev libluajit-5.1-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
+    libprotobuf-dev libsqlite3-dev meson libjpeg-dev libsrt-gnutls-dev
+
+Exceptions as of September 2023:
 
-Exceptions as of July 2017:
+  - Debian does not carry CEF (but it is optional). You can get experimental
+    (and not security-supported) CEF Debian packages built for unstable at
+    http://storage.sesse.net/cef/, and then configure Nageru with
 
-  - You will need Movit from unstable; stretch only has 1.4.0.
+     meson obj -Dcef_dir=/usr/lib/x86_64-linux-gnu/cef -Dcef_build_type=system -Dcef_no_icudtl=true
 
-  - You will need bmusb from unstable; 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 <sesse@google.com> (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”.
+Nageru and Futatabi use Meson to build. For a default build (building both),
+type
+
+  meson obj && cd obj && ninja
+
+To start Nageru, hook up your equipment, and then type “./nageru”.
+For Futatabi documentation, please see https://nageru.sesse.net/doc/.
+
 It is strongly recommended to have the rights to run at real-time priority;
 it will make the USB3 threads do so, which will make them a lot more stable.
 (A reasonable hack for testing is probably just to run it as root using sudo,
@@ -133,9 +171,12 @@ The name “Nageru” is a play on the Japanese verb 投げる (nageru), which m
 to throw or cast. (I also later learned that it could mean to face defeat or
 give up, but that's not the intended meaning.)
 
+The name “Futatabi” comes from the Japanese adverb 再び (futatabi), which means
+“again” or “for the second time”.
+
 
 Nageru's home page is at https://nageru.sesse.net/, where you can also find
-contact information and link to the latest version.
+contact information, full documentation and link to the latest version.
 
 
 Legalese: TL;DR: Everything is GPLv3-or-newer compatible, and see
@@ -148,6 +189,7 @@ Portions Copyright (C) 2010-2015 Fons Adriaensen <fons@linuxaudio.org>.
 Portions Copyright (C) 2012-2015 Fons Adriaensen <fons@linuxaudio.org>.
 Portions Copyright (C) 2008-2015 Fons Adriaensen <fons@linuxaudio.org>.
 Portions Copyright (c) 2007-2013 Intel Corporation. All Rights Reserved.
+Portions Copyright (C) 2019 Yngve Molnes.
 
 
 This program is free software: you can redistribute it and/or modify