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.