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