A Python GUI application for controlling Blackmagic cameras via REST API.
- Real-time Camera Control: Adjust ISO, shutter speed, aperture, and white balance
- Recording Control: Start/stop recording with visual feedback
- Live Status Monitoring: Battery level, storage remaining, and current settings
- Auto Refresh: Automatic status updates from camera
- Configurable Settings: Connection, UI, and logging settings
- Modern GUI: Clean, responsive interface using tkinter
- Python 3.7 or higher
- tkinter (usually included with Python)
- Required packages (see requirements.txt)
- Clone or download this repository
- Install dependencies:
pip install -r requirements.txt
python main.py-
Camera Connection:
- Go to File → Settings → Camera tab
- Set your camera's IP address and port
- HTTPS Settings:
- Enable "Use HTTPS" for secure connection (mandatory)
- Disable "Verify SSL" if using self-signed certificates
- Authentication (Required):
- Enter Username/Password (most common), OR
- Enter API Key if your camera uses token-based auth
- Try common defaults: admin/admin or blackmagic/blackmagic
- Configure timeout and retry settings
-
Interface Settings:
- Choose UI theme
- Set window size preferences
- Configure auto-refresh settings
-
Logging:
- Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
- Configure log file rotation
- Connect to Camera: Click "Connect" button
- Adjust Settings: Use the control panel to change:
- ISO (100-12800)
- Shutter Speed (1/24 - 1/200)
- Aperture (f/1.4 - f/16)
- White Balance (2500K - 7500K)
- Recording: Use the recording panel to start/stop recording
- Status Monitoring: View real-time camera status and settings
The application now supports HTTPS connections for secure communication with your Blackmagic camera. The application expects a REST API with the following endpoints:
- Protocol: HTTPS (mandatory for Blackmagic cameras)
- Port: 443 (HTTPS default)
- SSL Verification: Disabled by default for self-signed certificates
- Authentication: Username/Password or API Key required
- Host: JuhaninMicro.local (configurable)
- Username:
admin/ Password:admin - Username:
blackmagic/ Password:blackmagic - Check your camera manual for model-specific defaults
- GET
/status- Get camera status and settings
- POST
/recording/start- Start recording - POST
/recording/stop- Stop recording
- PUT
/settings/iso- Set ISO value - PUT
/settings/shutter- Set shutter speed - PUT
/settings/aperture- Set aperture - PUT
/settings/whitebalance- Set white balance
{
"success": true,
"model": "Blackmagic Pocket Cinema Camera 4K",
"firmware": "7.9.1",
"serial": "123456789",
"settings": {
"iso": 800,
"shutter_speed": "1/50",
"aperture": "f/2.8",
"white_balance": 5600,
"recording": false,
"battery_level": 85,
"storage_remaining": "01:23:45"
}
}BlackmagicMicroControl/
├── main.py # Application entry point
├── requirements.txt # Python dependencies
├── config.json # Configuration file (auto-generated)
├── src/
│ ├── api/
│ │ └── camera_client.py # REST API client
│ ├── config/
│ │ └── settings.py # Settings management
│ ├── gui/
│ │ ├── main_window.py # Main application window
│ │ ├── control_panels.py # Camera control panels
│ │ └── settings_dialog.py # Settings dialog
│ └── utils/
│ └── logger.py # Logging utilities
├── logs/ # Log files directory
└── .github/
└── copilot-instructions.md # Copilot instructions
- Update
CameraSettingsclass incamera_client.py - Add API methods to
BlackmagicAPIClient - Create UI controls in
control_panels.py - Update the main window event handlers
- Modify themes and styles in
main_window.py - Add new panels by extending the control panels
- Update settings dialog for new configuration options
- Verify camera IP address and port in settings
- Check network connectivity
- Ensure camera API is running and accessible
- Review logs in the
logs/directory
- Disable auto-refresh if experiencing slowdowns
- Increase refresh interval in settings
- Check log level (DEBUG creates more overhead)
- Try different themes in Interface settings
- Adjust window size settings
- Restart application after making changes
This project is provided as-is for educational and development purposes.