Skip to content
/ multipi Public

A flexible video acquisition pipeline for synchronized multi-camera recording, designed for Raspberry Pi systems and adaptable to other Linux-based camera setups.

License

Notifications You must be signed in to change notification settings

M-Eng/multipi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MultiPi Logo

Synchronized Multi-Camera Video Acquisition

License: MIT

MultiPi is a flexible video acquisition pipeline designed for academic research, enabling synchronized recording from multiple cameras (clients) to a central server. Initially built for Raspberry Pi camera modules, it can be adapted for other Linux-based camera systems.

It simplifies multi-camera setups by handling remote control, monitoring, centralized data storage (reducing client storage needs), and time synchronization across video streams. For unreliable network conditions, clients can optionally cache data locally and upload it later.

Case Animation         Camera and Bracket         Server Interface

Key Features

  • Multi-Client Architecture: Connect and manage numerous cameras from a central point.
  • Synchronized Recording: Ensures temporal alignment across video streams from different clients.
  • Centralized Storage: Streams video data directly to the server for storage.
  • Remote Control & Monitoring: Start, stop, and monitor recordings via a web interface.
  • Flexible Configuration: Customize acquisition parameters via configuration files.
  • Offline Caching (Optional): Clients can store data locally if network connectivity is intermittent.
  • Raspberry Pi Optimized: Includes specific setup instructions and optimizations for Raspberry Pi. See also the 3D Printable Case & Mount.

Prerequisites

  • Python: Python 3.x
  • FFmpeg: Required on the server for video processing. (Installation Guide)
  • MQTT: Required on the server for communication between clients and server. (Installation Guide)
  • Network: All server and client machines must be on the same network.
  • Operating System: Only tested on Linux.

Installation

We recommend using a Python virtual environment (e.g., venv) for installation.

# 1. Clone the repository
git clone https://github.com/M-Eng/multipi.git
cd multipi

# 2. Create and activate a virtual environment (example using venv)
python3 -m venv venv
source venv/bin/activate 

# 3. Install core dependencies (including server and client)
pip install -r src/server/requirements.txt
pip install -r src/client/requirements.txt

Getting Started: Quick Start

  1. Configure: Modify configuration files in configs/ as needed (e.g., server IP address, camera settings). See Configuration below.
  2. Start the Server:
    python3 src/server/start.py
  3. Start a Client:
    python3 src/client/connect.py
  4. Access Web Interface: Open your web browser and navigate to http://<server_ip>:5000. You should see connected clients.
  5. Control Recording: Use the web interface to start/stop recording on clients. Data will be saved on the server (default location specified in the configuration file VIDEO_DATA_DIR).

Usage

Refer to the Quick Start guide above for basic operation.

  • Web Interface: Provides monitoring and control for connected clients.
  • Command Line: Server and clients are started via the command line as shown above.
  • Auto-Start: For Raspberry Pi clients, refer to the RPi Setup Guide for instructions on automatic startup on boot.

Configuration

System behavior is customized through configuration files located in the configs/ directory:

Server Configuration (config_server.ini)

  • MQTT Settings: Configure broker address, port, and certificate paths for secure communication
  • Webserver Settings: Set server address, port, and authentication credentials
  • Main Settings: Define video data storage directory

Client Configuration (config_client.ini)

  • MQTT Settings: Configure broker address, port, certificate paths, and reconnection parameters
  • Stream Settings: Set server address for video streaming
  • Main Settings: Additional client-specific parameters

For detailed configuration options, refer to the example files in the configs/ directory.

Documentation

Contributing

Contributions are welcome! Please read our Contributing Guidelines

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support & Contact

If you found this project useful, please consider citing it as follows:

@misc{multipi,
    author = {Engilberge, Martin},
    title = {MultiPi: Synchronized Multi-Camera Video Acquisition},
    url = {https://github.com/M-Eng/multipi},
    year = {2025},
}

About

A flexible video acquisition pipeline for synchronized multi-camera recording, designed for Raspberry Pi systems and adaptable to other Linux-based camera setups.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published