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 optionally includes a generic purpose Streaming Server plug-in, especially made for IoT devices, that can serve custom web applications that can make use of a number of standard and modern built-in services for Real-Time Communications such as encrypted, bidirectional data channels, audio and video streaming or conferencing over the web. UV4L also provides a RESTful API for the developers who want to implement their own custom applications.

Click here for the installation instructions for ARM or x86. Here some tutorials and demos.

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).

    landing page
  • Native WebRTC extension for the Streaming Server

    two-way audio/video example
  • 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)