Skip to content

MoCapSTR v1.4.0 - Initial Public Release (Hardware Sync for FreeMoCap)

Latest

Choose a tag to compare

@ZClassified ZClassified released this 25 Aug 11:22
· 4 commits to main since this release

MoCapSTR v1.4.0 — Hardware-Synchronized Multi-Camera Recording for FreeMoCap

Welcome to the initial public release of MoCapSTR!

MoCapSTR is an open-source recording client engineered specifically to capture frame-accurate, hardware-synchronized multi-camera datasets on Windows for FreeMoCap.


⚡ Highlights & Key Features

  • Arduino Hardware Synchronization: Triggers Innomaker OV9281 global-shutter USB cameras synchronously via an Arduino FSIN square-wave pulse. Includes automatic fallback to free-run mode if disconnected.
  • Zero-Copy PyAV Recording Backend: Writes incoming raw MJPEG camera streams straight to disk via FFmpeg/PyAV without CPU decoding overhead, minimizing frame drops even with high camera counts.
  • Blackmagic SDI Support: Full Genlock/SDI capture card support via Blackmagic Desktop Video drivers.
  • Live Multi-Cam Preview & Charuco Overlay: Real-time multi-view grid with per-camera rotation (0°, 90°, 180°, 270°) and live cv2.aruco Charuco board detection overlay for instant calibration checks.
  • One-Click FreeMoCap Integration: Built-in offline batch converter (raw .avi to H.264 .mp4) and one-click transfer to ~/freemocap_data/recording_sessions/.
  • Complete 3D Printing & Enclosure Guide: Includes FreeCAD source models, ready-to-print STLs, fastener BOMs, and step-by-step photo assembly guides for camera cases, trigger boxes, and XLR splitter boxes.

⚠️ Important Hardware Requirements & USB Bandwidth

Because hardware-triggered cameras expose and transmit raw video packets at the exact same microsecond, simultaneous bandwidth spikes occur on the USB bus:

  • Motherboard Limit: Standard onboard PC USB controllers typically handle up to 3 cameras reliably in trigger mode.
  • Recommended Setup for 4+ Cameras: We strongly recommend installing a PCIe USB expansion card with dedicated controller chips per port (e.g. 4 separate USB controller chips) to prevent dropped frames.
  • USB Polling: Set USB Polling in the Setup tab 1 step higher than your target FPS (e.g. Target 30 FPS -> USB Polling 60 FPS).

📦 Installation & Download

  • Windows Standalone Executable: Download the attached MoCapSTR.exe below, place it in a folder of your choice, and run it directly. No Python installation required!
  • Source Code: Clone the repository and run pip install -r requirements.txt followed by python python/main.py.

🤝 Community & Bug Reports

This project is in active beta development. If you encounter bugs, hardware quirks, or have ideas, please open an Issue on GitHub!