# Multi-Camera Simulation Guide This guide explains how to simulate 4 cameras using a single webcam for testing the LPR integration in a realistic multi-camera environment. ## ๐ŸŽฏ Purpose Simulate 4 real-world cameras to test: - Multiple camera streams with car detection - LPR integration across different cameras - Session management for multiple simultaneous detections - Database updates from different camera sources ## ๐Ÿš€ Quick Start ### Windows ```bash # Option 1: Use batch file (opens 4 terminal windows) start_4_cameras.bat # Option 2: Manual start (run each in separate terminal) python multi_camera_simulator.py 1 python multi_camera_simulator.py 2 python multi_camera_simulator.py 3 python multi_camera_simulator.py 4 ``` ### Linux/macOS ```bash # Option 1: Use shell script (opens 4 terminal windows) ./start_4_cameras.sh # Option 2: Manual start (run each in separate terminal) python3 multi_camera_simulator.py 1 python3 multi_camera_simulator.py 2 python3 multi_camera_simulator.py 3 python3 multi_camera_simulator.py 4 ``` ## ๐Ÿ“ก Camera URLs Each simulated camera will have unique URLs: | Camera | HTTP Snapshot | RTSP Stream | Visual ID | |--------|--------------|-------------|-----------| | 1 | `http://10.101.1.4:8080/snapshot` | `rtsp://10.101.1.4:8550/stream` | Yellow border | | 2 | `http://10.101.1.4:8081/snapshot` | `rtsp://10.101.1.4:8551/stream` | Magenta border | | 3 | `http://10.101.1.4:8082/snapshot` | `rtsp://10.101.1.4:8552/stream` | Green border | | 4 | `http://10.101.1.4:8083/snapshot` | `rtsp://10.101.1.4:8553/stream` | Blue border | ## ๐ŸŽจ Visual Differentiation Each camera adds visual branding to help distinguish streams: - **Camera 1**: Yellow border + "CAMERA 1" text - **Camera 2**: Magenta border + "CAMERA 2" text - **Camera 3**: Green border + "CAMERA 3" text - **Camera 4**: Blue border + "CAMERA 4" text - **All**: Timestamp with camera ID ## ๐Ÿ”ง Configuration Options ### Basic Usage ```bash python multi_camera_simulator.py ``` ### Advanced Options ```bash python multi_camera_simulator.py 1 --webcam-index 0 --base-port 8080 --rtsp-base-port 8550 python multi_camera_simulator.py 2 --no-rtsp # HTTP only ``` ### Parameters - `camera_id`: Required (1-4) - `--webcam-index`: Webcam device index (default: 0) - `--base-port`: Base HTTP port (default: 8080) - `--rtsp-base-port`: Base RTSP port (default: 8550) - `--no-rtsp`: Disable RTSP streaming ## ๐Ÿ—๏ธ CMS Configuration Configure each camera in your CMS with these settings: ### Camera 1 ``` Camera Identifier: webcam-camera-01 Snapshot URL: http://10.101.1.4:8080/snapshot RTSP URL: rtsp://10.101.1.4:8550/stream Snapshot Interval: 2000 ``` ### Camera 2 ``` Camera Identifier: webcam-camera-02 Snapshot URL: http://10.101.1.4:8081/snapshot RTSP URL: rtsp://10.101.1.4:8551/stream Snapshot Interval: 2000 ``` ### Camera 3 ``` Camera Identifier: webcam-camera-03 Snapshot URL: http://10.101.1.4:8082/snapshot RTSP URL: rtsp://10.101.1.4:8552/stream Snapshot Interval: 2000 ``` ### Camera 4 ``` Camera Identifier: webcam-camera-04 Snapshot URL: http://10.101.1.4:8083/snapshot RTSP URL: rtsp://10.101.1.4:8553/stream Snapshot Interval: 2000 ``` ## ๐Ÿงช Testing LPR Integration With 4 cameras running, you can test: 1. **Multiple simultaneous detections** - Cars detected by different cameras 2. **Session isolation** - Each camera gets separate session IDs 3. **LPR processing** - License plate results for different cameras 4. **Database updates** - Multiple car records with different session IDs ### Test Scenario 1. Start all 4 cameras 2. Connect all 4 to detector worker 3. Show car to webcam (all cameras see it) 4. Each camera should get separate session ID 5. Send LPR results for each session ID 6. Verify database updates for each camera ## ๐Ÿ”ง Troubleshooting ### Port Already in Use If you see port conflicts: ```bash # Check what's using the port netstat -an | findstr :8080 netstat -an | findstr :8550 # Use different base ports python multi_camera_simulator.py 1 --base-port 9080 --rtsp-base-port 9550 ``` ### Webcam Access Issues ```bash # Try different webcam indices python multi_camera_simulator.py 1 --webcam-index 1 # Check available cameras python -c "import cv2; print([i for i in range(10) if cv2.VideoCapture(i).isOpened()])" ``` ### FFmpeg Issues ```bash # Disable RTSP if FFmpeg unavailable python multi_camera_simulator.py 1 --no-rtsp ``` ## ๐Ÿ’ก Pro Tips 1. **Start cameras in order** (1, 2, 3, 4) for easier tracking 2. **Use different terminals** for each camera to see individual logs 3. **Check status endpoints** for health monitoring: - `http://10.101.1.4:8080/status` - `http://10.101.1.4:8081/status` - etc. 4. **Monitor logs** to see which camera is processing which detection 5. **Test LPR with unique session IDs** from each camera This setup provides a realistic multi-camera environment for comprehensive LPR integration testing! ๐ŸŽ‰