Features V4.3.x
For more details, see the User Guide.

Feature Overview
Platform Support
- raspiCamSrv can be run on all currenly known Raspberry Pi hardware platforms (except microcontroller boards) from Raspberry Pi Zero W to Raspberry Pi 5
- Supported Operating Systems are the Raspberry Pi OS versions Bullseye, Bookworm and Trixie.
- The recommended variant for all of these is the full 64-Bit variant recommended by Raspberry Pi Imager
Camera Support
- raspiCamSrv supports the currently available Raspberry Pi Cameras, however AI features for the AI Camera are currently not yet supported.
- CSI Cameras from other providers can be used as long as they are supported by Picamera2.
- USB cameras connected through the Pi's USB ports are seamlessly integrated, however control options are limited, depending on their capabilities.
Camera Management
- raspiCamSrv can detect and use all CSI and USB cameras connected to a Raspberry Pi, as long as they are identified by Picamera2, which is usually the case.
- One of these camaras must be selected as Active Camera.
Camera configuration (e.g. stream size colour space or flipping) as well as controls (e.g. focus, zoom/pan/tilt, exposure- and image-control) can be actively modified only for the Active Camera. - Another camera, if available, can be selected as Second Camera by Multi Camera Control.
- All settings for the Active Camera can be preserved before it is replaced by another camera (e.g. by switching cameras). They will be restored/applied when this camera is set as Active Camera or as Second Camera.
- Function Reload Cameras allows hot plug-in/-out of USB cameras without server restart
Camera Configuration
- raspiCamSrv supports all camera configuration options which are foreseen by Picamera2.
- Individual configuration sets can be specified for 4 different use-cases: Live View, Photo, Raw Photo and Video.
- Before the camera is started, raspiCamSrv configures all three camera streams (lowres, main, raw) for the most likely use-cases. This allows to keep the live stream (lowres) active while the camera is being used for phototaking (main), raw photo taking (raw) or video recording (main)
- If necessary, specific applications can request the camera for exclusive use.
- Support of Camera Tuning by selection and management of tuning files.
Camera Control
- raspiCamSrv supports all Camera Control options foreseen by Picamera2.
- Focus control if supported by the camera (e.g. camera module 3 or specific USB cameras).
- Graphically drawing Autofocus Windows for CSI cameras.
- Pan / Tilt / Zoom for CSI as well as for USB cameras.
- Auto Exposure Control for CSI cameras.
- Exposure Control for CSI cameras.
- Image Control for CSI cameras as well as for USB camaras (if supported by the camera).
Photo Taking / Video Recording
- Taking Photos / Raw Photos.
- Recording Video.
- Recording Audio along with the Video.
- Photo/Video metadata display.
- Photo histogram generation and display.
- Display buffer for comparison of photos and metadata/histogram.
- Photo Viewer
- Photo Download
Streaming
- Endpoint for streaming (MJPEG) the active camera.
- Endpoint for streaming the second camera.
- Endpoints for photo snapshots of active and second camera.
- Option for activating / deactivating authentication for streaming and snapshots.
Multi-Camera Features
- Selection of Active Camera and Second Camera out of connected CSI and USB cameras.
- Simultaneous streaming of both cameras.
- Simultaneous photo taking or video recording for both cameras.
- Camera switch.
- Preserving active camera configuration and controls for later reuse.
- Stereo vision support for two cameras of same model.
- Synchronization of settings for stereo cameras
- Camera calibration for stereo cameras.
- Depth Maps
- 3D Video
Photo Series
- Definition of Photo Series (# shots, interval etc.).
- Control of Photo Series (start, stop, pause, resume).
- Download of Photo Series.
- Timelapse Series with optional sunrise/sunset restrictions.
- Exposure Series with varying exposure time or gain (ISO).
- Exposure Series Result showing histograms.
- Focus Stack Series iterating through a range of focus settings.
- Capability for auto restart of series when Server or Raspi is restarted.
Motion Detection
- Scheduled Detection of Motion.
- Support for different algorithms for motion detection.
- Adjustable Sensitivity for motion detection.
- Support for Regions of Interest.
- Support for Regions of NO Interest
- Test Mode for Motion Detection.
GPIO Device Management
- Configuration of GPIO Devices.
- Testing of GPIO Devices
- Device Calibration for devices which rquire state tracking (e.g. stepper motor)
- Device control through gpiozero
- All gpiozero device types are supported in raspiCamSrv
- Own device types can be added by configuration (see Stepper Motor)
Event Handling - Triggers and Actions
- Configuration of Triggers
- Triggering by GPIO Input Devices (button, sensors)
- Triggering by Motion Detection
- Triggering by Camera events (photo taken, video start, video stop)
- Configuration of Actions
- Actions by GPIO Output Devices (LED, buzzer, servo, motor)
- Actions by Camera (take photo, start/stop video)
- Camera Actions in case of motion detection (video duration, photo burst)
- Notification actions (mail, mail attachments)
- Action-to-Trigger Association
- Event Viewer
- Event Calendar
- Detailed Event Information
- Event Photos / Videos with motion detection frame
- Event Photos / Videos with RoI RoNI
Console Functions
- Freely configurable Array of Versatile Buttons
- Freely configurable Array of Action Buttons for execution of configured Actions.
API
- Selected functions of raspiCamSrv are accessible through specific Web Service End Points
- API access is secured through JSON Web Tokens (JWT).
- A Postman collection is available for testing
- A specific API (probe) is available for 'probing' attribute values of raspiCamSrv live objects.
Privacy Protection
- raspiCamSrv access requires registered users
- The Superuser can manage other users: create, remove, reset password
- Login requires a password
- For streaming, it is possible to disable the necessity of authentication
- API access is secured through JSON Web Tokens (JWT).
- Secrets (mail account, JWT secret key) are held in a separate secrets store which is not part of the persisted configuration data.
Configuration Management
- Configuration Management refers to the way how raspiCamSrv handles its operational data which may be modified during user sessions.
- On request, all data of the raspiCamSrv server can be persisted as JSON files
- Optionally, the server can start with the stored configuration or with an initialized setup.
- An indicator shows when configuration data have been modified during a session.
- All modifications, which have not yet been saved, are listed in a dialog.
- You can create backups of entire configuration sets and restore them at another time.
System Information
- Information on the Raspberry Pi System, the raspiCamSrv software stack and the connected cameras is shown on the Info / Installed Cameras screen.
- Properties of the Active Camera are also shown.
- In addition, the Info Menu provides also details for the individual Sensor Modes of the Active Camera.
No Camera
- raspiCamSrv can operate in a special mode when no camera is connected.
- In this case, all camera-related features are invisible.
- Functions which do not require a camera, remain available: GPIO devices, Event Handling, Console.
Supervision
- For error analysis, Logging can be activated on module level.
- In order to inspect the interface of raspiCamSrv with Picamera2, it is possible to activate Generation of Python Code for the Camera. This will create an executable Python file including all Picamera2 calls.
Known Issues
- In Safari (e.g. on an iPad), there is still an issue with the Live Screen:
Due to the specific timing of the onload event, AF Windows may not be visible immediately after the page has been loaded. If you just 'pull' the entire window down for a short time (don't touch the AF Windows canvas), they will show up.
If the Live stream does not show up (e.g. after visiting another screen), take a photo and then push Hide/Show. This will show the live stream. - There may be an issue configuring specific sensor modes or stream sizes for the Live View in Config. As a result, the live view will not show up and the server log will show an exception. You may need to reset the server (see Reset Server)
This is already fixed but may not yet be available in your environment (see picamera2 Issue #959)
Limitations
The software is still being tested and extended.
- Hot plug of CSI cameras is not supported. This will require rebooting the Raspberry Pi (Hot plug of USB cameras is supported).
- Hot plug of USB cameras is possible but requires to Reload Cameras.
Hot plug-out of a USB camera should be avoided when the camera is active. This will produce exceptions. - Although the layout is responsive, it may not be "good-looking" with all sizes of browser windows
Credits
- Most technical information on Picamera2 (https://github.com/raspberrypi/picamera2) has been taken from the Raspberry Pi - The Picamera2 Library document.
- The implementation of live streaming with Flask has been inspired by https://blog.miguelgrinberg.com/post/video-streaming-with-flask
- The detailed solution for the mjpeg_server is based on the example mjpeg_server.py of the picamera2 repository
- The solution for drawing on the canvas for definition of AF Windows has been inspired by https://codepen.io/AllenT871/pen/GVyXKp
- The Extended Motion Capturing Algorithms are based on work done by Isaac Berrios, published under Introduction to Motion Detection: Part 1 - 3
The algorithm code has been taken from this source as well as its GitHub Repository and integrated into the raspiCamSrv environment. - raspiCamSrv uses the gpiozero library for interfacing GPIO-connected devices.
