Overview

The Background Story

Recently (we have now March 2021) I was starting to re-animate Inlab Scheme, “my” implementation of of the algorithmic language Scheme that I wrote approximately 20 years ago. Inlab Scheme offers (and offered) - in addition to the R4RS language core - graphical data types and image processing procedures which are quite powerful.

As a matter of fact, I was quickly realising that I needed to port the outdated v4l-based functionality to the newer v4l2 (Video for Linux Version 2) API. Then - some weeks later - I was ready with a new and independent set of utilities and abstract data types to handle everything I was initially looking for (the already mentioned purpose to implement graphical input and output for Inlab Scheme).

As a logical consequence (facing the ubiquitous MJPG capabilities of contemporary USB webcams and the Raspberry Pi) I was able to quickly assemble and release this Inlab-MJPG-Streamer project which is certainly very interesting for many (at least in the Linux and Raspberry Pi world). Nevertheless it’s always surprising how the documentation and web site generation efforts compare to the raw development time …

However, due to various copyright constraints it’s not directly possible to release it as open source, but releasing it free for private, personal, educational and testing purposes is absolutely no problem and for us the way to go.

The bottom line is: Inlab-MJPG-Streamer is a project which came to life as some kind of valuable side effect during our current development endeavours - and that is what we want to share. I hope you enjoy Inlab-MJPG-Streamer as much as we do, comments and suggestions are always welcome!

Application Examples

Just to name a few of the most common application examples:

  • Watching and controlling your 3D printer printing (or any other longer lasting production process)
  • Quickly setup a live view of any event or situation consisting of one or multiple cameras (what about sending a high resolution stream to a beamer at a live sport event?)
  • Quickly integrate a Raspberry Pi camera as an additional video source for a surveillance system (e.g. Synology Surveillance Station)

You find an overview of all related / alternative streaming software and surveillance systems below (don’t hesitate to check them out).

DISCLAIMER: We are never responsible for any illegal use of Inlab-MJPG-Streamer. Please check carefully the legal requirements and regulations that apply to you and the intended application in your region or country. Critical areas most likely include hidden video surveillance without consent of the recorded person or persons and any employee performance monitoring.

The Design Principles

  • Minimalism and Simplicity: We pushed this as far as reasonable possible, thus just entering streamer or streamer -b is almost all you need to get started (in many cases).
  • Security: A solid deny/allow ACL (access control list) mechanism is an absolute must, augmented by a lighter “secret URL component” feature. Those two features combined allow exact access control even on public networks.
  • IPv4 and IPv6: Supporting both stacks simultaneously by design has been mandatory, this applies also without any restrictions to the former mentioned deny/allow-ACL mechanism.
  • An integrated HTTP Server: Our very simple multithreading “dual stack” HTTP server has been easily integrated into Inlab-MJPG-Streamer.
  • Client controlled Framerate: With Inlab-MJPG-Streamer each Client requests (and gets) its personal frame rate, the internal frame rate from the camera to the software is thus decoupled and is running internally on its native maximum speed.
  • Multiple Cameras: Multiple cameras on one machine or Raspberry Pi are easy as well, just run another instance of Inlab-MJPG-Streamer to add a camera (just specify a different port).
  • Free personal Use: Inlab-MJPG-Streamer is free for personal, educational and testing use due to all the software components that we merged from our large collection of components as used in our “main” commercial software (the most has been obviously inherited from BalanceNG).
  • Security made in Germany: Inlab-MJPG-Streamer bears the quality certificate “IT Security made in Germany” (ITSMIG) issued by the “IT Security Association Germany” (teletrust): Unrestricted by political requirements, we guarantee that Inlab-MJPG-Streamer is free from any undocumented loopholes, undocumented backdoors and any other undocumented interception mechanisms. Please contact us for more information about our auditing process if you require a solid proof (NDA required).

Feature Overview

  • Integrated HTTP server
  • Virtual log terminal as a MJPG Stream
  • Access Control with two stages of ACL pairs
  • Individual frames per second for each client
  • Timestamp and camera name

Here’s a list of related software and useful alternatives that inspired and influenced the development of Inlab-MJPG-Streamer (without copying a single line of code):

  • MJPG-streamer is a somewhat older project that has been abandoned because lack of time by the original author. The following fork is the valid successor:
  • jacksonliam/mjpg-streamer is a fork of mjpg-streamer with added support for the Raspberry Pi camera via the input_raspicam plugin.
  • pikvm/ustreamer µStreamer is a lightweight and very quick server to stream MJPG video from any V4L2 device to the net. A possible alternative to the two projects mentioned before.
  • Motion also allows MJPG streaming with an additional focus on motion detection.
  • v4l2loopback is a kernel module to create V4L2 loopback devices. This is a great tool for sending the output from any other video application back into the V4L2 driver (thus appearing as a “normal” V4L2 camera device to all other applications).
  • Synology Surveillance Station is a professional surveillance system running on Synology NAS systems. Usually it comes with two camera licenses, additional camera licenses are available. Inlab-MJPG-Streamer integrates very well as a video source.
  • ZoneMinder claims to be “a full-featured, open source, state-of-the-art video surveillance software system”.

 

Proceed to the Online Manual