µStreamer

Lightweight and very quick server to stream MJPEG video from any V4L2 device to the net.


Product Overview

µStreamer is a lightweight and quick server that enables streaming of MJPEG video from any V4L2 device to the internet. This project is part of the PiKVM project, designed to stream high-resolution VGA and HDMI screencast hardware data. µStreamer is similar to mjpg-streamer but with several key differences that make it a more robust and feature-rich streaming solution.

Main Features

  1. Multithreaded JPEG Encoding: µStreamer supports multithreaded JPEG encoding, which allows for faster video processing and reduced CPU load.
  2. Hardware Image Encoding on Raspberry Pi: The project takes advantage of the Raspberry Pi's hardware image encoding capabilities, making it an ideal solution for streaming on this platform.
  3. Behavior when device is disconnected while streaming: Unlike mjpg-streamer, µStreamer will show a black screen with "NO SIGNAL" until the device is reconnected, rather than stopping the stream altogether.
  4. DV-Timings Support and Resolution Adjustment: µStreamer supports DV-timings, allowing users to adjust the resolution on the fly by source signal. This feature is partially supported in mjpg-streamer.
  5. Option to Skip Frames when Streaming Static Images: µStreamer offers an option to skip frames when streaming static images via HTTP, which can help reduce traffic and conserve bandwidth.
  6. Streaming via UNIX Domain Socket: The project supports streaming via UNIX domain socket, providing a more efficient and reliable way to transmit video data.
  7. Systemd Socket Activation: µStreamer is designed to work seamlessly with Systemd, allowing for easy activation and management of the stream using systemd socket activation.
  8. Debug Logs and Performance Statistics: Users can access debug logs without recompiling the software, as well as performance statistics and HTTP streaming parameters.
  9. Option to Serve Files with Built-in HTTP Server: µStreamer includes a built-in HTTP server that allows users to serve files directly from the stream, making it easy to share media with others.
  10. Signaling about Stream State on GPIO using libgpiod: The project uses libgpiod to signal about the stream state on GPIO, providing an additional layer of control and monitoring capabilities.
  11. Access to Webcam Controls and Settings via HTTP: µStreamer offers access to webcam controls (focus, servos) and settings (brightness) via HTTP, allowing users to adjust their camera's settings remotely.

Overall, µStreamer is a powerful and feature-rich streaming solution that offers several advantages over mjpg-streamer. Its lightweight design, fast performance, and robust set of features make it an ideal choice for anyone looking to stream video from a V4L2 device to the internet.

Related

Kyoo
Open Streaming Platform
Oblecto
Streama
Ganymede
Kerberos.io
Ansible-NAS
SPIS
Owncast
Star history

Star history for µStreamer