Core features
- collection of various Video4Linux2-compliant drivers (back-ends) and front-ends (e.g. Streaming Server)
- fully user space. From user’s perspective drivers are not different from an those in kernel space.
- cross-platform
- no kernel crashes are possible
- each module can be loaded dynamically and configured from command line or configuration file
- there’s one independent system process for each handled device (there can be many of them running at the same time)
- each plug-in (e.g. Streaming Server) runs in the context of a single process and is “per-device”
- device node registration and deregistration are done when the process starts or shuts down respectively
- multi-thread safe
can run in foreground, or in background as a daemon - both Read-Write and Streaming Video4Linux2 I/O API are supported
- no need of root privileges
- optional real-time scheduling and no memory paging
- multilevel logger that can send messages to a (remote) syslog daemon
- no dependency on any third-party library other than basic system libraries
Streaming Server & WebRTC extension
- support for both HTTP and HTTPS protocols
- record while streaming and playback in standard HTML5
- can be programmed or controlled through a well-defined RESTful API
- offers a “per-device”, built-in web front-end (there can coexist as many Streaming Servers as devices running at the same time)
- can serve any custom web pages under a given filesystem path
- includes a Control Panel web page that allows to concurrently control all the device settings while the device is in use for streaming by any Video4Linux2 application
- many formats for live streaming over the web are possible like MJPEG, JPEG (HTTP/HTTPS) or WebRTC (audio, video, data)
- concurrent, optionally delayed JPEG snapshots
- optional bidirectional encrypted live audio, video and data from or to the browser, with automatic play out to connected speakers and direct rendering of video onto the display
- very efficient support for multiple clients
- the server does NOT stop any other applications from using the device (except if a stream is actually open)
- may be used in “headless mode” (without any browser) to get the RAW data streams in any video format over HTTP/HTTPS
- support for ‘user’, ‘admin’, ‘config’ and ‘www’ different user authentications (see the manual for details)
- since the server supports WebRTC technology “out of the box”, custom HTML5 pages embedding video and audio content can be implemented as wanted
- WebRTC is ideal for low-latency live streaming over internet (other than LAN) and provides modern solutions like encryption, NAT traversal through STUN and TURN, adaptive streaming, echo cancellation, hardware-encoded H264/VP8/VP9/Opus encodings, etc…
- includes a multi peer-to-peer audio/video Conferencing web page written in standard HTML5
- supportsĀ WebRTC Data Channels for message from/to local third-party applications (e.g. useful for theĀ IoT or for controlling robots)
- can be fine-tuned at wish (things like HTTP/HTTPS port, max. concurrent clients and threads, keepalive connection timeouts and so on)
- can read default parameters from a configuration file
- proprietary, standard XMPP (with support for logins/MUC), Janus signaling protocols for WebRTC are supported
- can broadcast audio&video to participants of a Jitsi Meet Web Conference or have bidirectional audio/video
- can participate to videoconferencing rooms on the cloud with the Janus WebRTC Gateway
UVC Driver
module for devices based on the USB Video Class specifications
XScreen Driver
- turn any portion of any X Screen into a virtual Video4Linux device
- if used together with the Streaming Server, it’s possible to live stream the Desktop (and audio too) to any browser via WebRTC
MJPEGStream driver
- create a virtual Video4Linux device from a given MJPEG Stream (e.g. IP Camera) which can be used along with Streaming Server or other third-party applications
Raspicam and raspicam-ai drivers
- module for the single or dual Raspberry Pi CSI Camera boards (Zero, ZeroW, 1, 2, 3, 4, CM, CM3, etc…) and TC358743 HDMI-in to MIPI converter
- full control of any supported image setting and resolution
- support for any video format available from the GPU (yuv420, nv21, yvu420, rgb565, rgb565x, rgb24, bgr24, rgba, bgra, jpeg Still, mjpeg Video, h264)
- directly supports Stereoscopic Vision (side-by-side or top-bottom images)
- the dual cameras can be concurrently handled as two independent cameras (with two different device nodes)
- on-the-fly text overlay with any font, color and position. Text can be dynamically changed
- on-the-fly, real-time object detection and tracking (default is face detection)
- text overlay and object detection work efficiently in any selected video format (compressed or not)
- the raspicam-ai driver adds support for Tensor Flow Lite models and for the Google Edge TPU which allows to do things like real-time object detection and tracking
Raspidisp driver
- turn a given Raspberry Pi HDMI output source into a virtual Video4Linux-compliant device (such as a camera) that can capture the images coming from that source
- when used with the Streaming Server, it allows your Raspberry Pi to be mirrored and controlled from the browser (plugin-free). This is a demo.