User space Video4Linux
UV4L was originally conceived as a modular collection of Video4Linux2-compliant, cross-platform, user space drivers for real or virtual video input and output devices (with absolutely no external difference from kernel drivers), and other pluggable back-ends or front-ends.
It has evolved over the years and now includes a full-featured Streaming Server component with a customizable web UI providing a set of standard, modern and unique solutions for encrypted live bidirectional data, audio and video streaming, mirroring or conferencing over the web and for the IoT . Since recent releases UV4L has also been providing a RESTful API for the developers who want to implement their custom applications.
Below is a list of the supported modules:
- UV4L core module (features, manual)
- Streaming server with web front-end over HTTP/HTTPS and on-the-fly device control (features, manual). It also provides a RESTful API for developers and can run custom web apps (example).
- Native WebRTC extension for the Streaming Server
- Jitsi Meet extension to broadcast live audio and video over the Web
- Support for Janus WebRTC Gateway to join videoconferencing rooms on the cloud
- UVC driver supporting webcams compliant with the Usb Video Class specifications (features, manual)
- XScreen driver, a virtual device capturing a given portion of an X screen (features, manual)
- MJPEGStream driver, create a virtual capture device from a given Motion JPEG stream, i.e. IP Camera (features, manual)
- Raspicam driver for all the Raspberry Pi camera boards (including stereoscopic cameras) and the TC358743 HDMI-in to MIPI converter (features, manual)
- Raspidisp driver for Raspberry Pi, create a virtual capture device from a given HDMI output source (features, manual)
- Dummy driver creating a fake device (useful for testing V4L2 applications and for other purposes, screenshot)