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). While still preserving the original intentions, UV4L has evolved over the years and now offers a generic purpose Streaming Server plug-in, especially made for IoT devices, that can serve custom web applications that can leverage a number of standard and modern built-in services for Real-Time Communications such as WebRTC, allowing encrypted and bidirectional audio, video and data streaming or conferencing over the web. UV4L also provides a RESTful API for the developers who want to implement their own 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)