A Windows GUI application for automating camera switching during iRacing spectating and streaming sessions. Perfect for content creators, league admins, and anyone who wants professional-looking camera work without manual switching.
- Automatic Camera Cycling - Set up primary cameras (cockpit, gyro) and occasional scenic cameras (TV1, blimp, chase) with configurable intervals
- Smart Pattern System - Show primary cameras X times, then switch to an occasional scenic shot
- Car Following - Select and follow any driver in the session
- Camera Groups - Organize cameras into Primary and Occasional groups with different timing
- Sequential or Random Mode - Choose how cameras cycle within each group
- Presets - Save and load your camera configurations for different tracks/events
- Optional Global Hotkeys - Control cycling without leaving iRacing (disabled by default to avoid conflicts)
- Auto-Reconnect - Automatically reconnect if iRacing restarts
No Python installation required!
- Download
iRacing Camera Director.exefrom the Releases page - Start iRacing and enter a session (practice, race, replay, etc.)
- Run
iRacing Camera Director.exe - Click Connect
- Select cameras for Primary and Occasional groups
- Click Start Cycling
If you prefer to run from source or want to modify the code:
- Windows 10/11
- Python 3.10 or higher
- iRacing installed
# Clone the repository
git clone https://github.com/YOUR_USERNAME/iracing-camera-director.git
cd iracing-camera-director
# Install dependencies
pip install -r requirements.txt
# Run the application
python main.pycustomtkinter- Modern themed GUIpyirsdk- iRacing SDK for Pythonkeyboard- Optional global hotkeys
- Connect - Launch iRacing first, then click Connect in the app
- Follow a Car - Select a driver from the dropdown and click Follow
- Configure Cameras - Check the cameras you want in each group:
- Primary: Driver-focused cameras (Cockpit, Gyro, etc.) - cycles frequently
- Occasional: Scenic/broadcast cameras (TV1, TV2, Blimp, Chase) - shown periodically
- Set Timing:
- Primary Interval: How long each primary camera shows (default: 20s)
- Occasional Interval: How long scenic cameras show (default: 60s)
- Pattern: Show Primary X times before switching to Occasional
- Start Cycling - Click the big Start button!
| Button | Action |
|---|---|
| Start/Stop | Toggle automatic camera cycling |
| Next Camera | Skip to the next camera immediately |
| Pause/Resume | Pause cycling on current camera |
Save your camera configurations for reuse:
- Type a name and click Save to create a preset
- Select a preset and click Load to restore settings
- Presets are stored in
~/.iracing_camera_director/presets/
Global hotkeys are disabled by default to avoid conflicts with iRacing or other software. To enable:
- Check "Enable Global Hotkeys"
- Default bindings (can be customized):
Ctrl+Shift+F1- Start/Stop cyclingCtrl+Shift+F2- Next cameraCtrl+Shift+F3- Pause/Resume
To build your own standalone .exe:
pip install pyinstaller
pyinstaller --onefile --windowed --name "iRacing Camera Director" main.pyThe executable will be in the dist/ folder.
- Make sure iRacing is running and you're in a session
- Try clicking Connect again after entering the track
- Click "Refresh Cameras" after connecting
- Make sure you're in an active session (not in menus)
- Make sure "Enable Global Hotkeys" is checked
- Run the app as Administrator if needed
- Check for conflicts with other hotkey software
- Use the "Follow" button to lock onto a specific car
- The app maintains focus on your selected driver
Contributions are welcome! Feel free to:
- Report bugs
- Suggest features
- Submit pull requests
MIT License - feel free to use, modify, and distribute.
- pyirsdk - iRacing SDK for Python
- CustomTkinter - Modern Python UI library
- The iRacing community
Made with coffee and late-night racing sessions.