Repository navigation
Releases: jpwalters/VideoCue
Release list
v1.11.0
v1.10.0
v1.9.0 - Linux Installer Support
Linux installer but like MacOS its yet to be testing on Linux.
v1.8.0 - MacOS Support
We now create an installer for MacOS though its un-test for now.
v1.7 - Stream Deck Properties
The preferences dialog now lets you set/update options for buttons and encoders.
- Color Options
- STOP
- Auto Change
v1.6 - Elgato Stream Deck Plus Support
Elgato Stream Deck Plus Support
Hardware: Elgato Stream Deck Plus (8 buttons + 4 encoders)
Preferences: Multi-tab dialog structure (Controller, Stream Deck, Application)
Button Configuration: Dropdown menus with actions (None, Preset 1-8, Run, Arm, Next, Back)
Unique Action Validation: Prevents duplicate action assignments
Encoder Press Feature: Configurable camera selection via encoder press
Visual Feedback: Live camera thumbnails and real-time button updates
Build System: hidapi.dll auto-download (not checked into version control)
Troubleshooting: Comprehensive device detection and button configuration guidance
v1.1
v1.0.5
VideoCue v1.0.0 Release Notes
Release Date: 2026-02-24
Status: General Availability (GA)
Overview
Version 1.0 marks the first stable production release of VideoCue, a multi-camera PTZ controller for VISCA-over-IP workflows with optional NDI video monitoring and USB controller integration.
Highlights
- Stable multi-camera PTZ control over VISCA-over-IP
- Optional NDI video preview with robust discovery and fallback behavior
- USB game controller support with configurable mappings and safety controls
- Deferred startup loading for faster app responsiveness
- Connection-state-aware controls, reconnect flows, and startup timeout recovery
- Improved reliability via comprehensive error handling and graceful degradation
Feature List
Camera Control
- Multi-camera management with per-camera widgets
- VISCA-over-IP PTZ commands (8-direction pan/tilt + stop)
- Variable-speed zoom and focus controls
- One-push autofocus support
- Camera presets with store/recall/update/delete
- Preset slot tracking with permanent camera memory slot assignments
Cue Tab
- Dedicated Cues tab for building ordered cue rows
- Multi-camera cue columns with per-camera preset selection per cue row
- Cue row operations: Add, Insert, Duplicate, Delete
- Editable cue number and cue name with input validation
- Cue lock/unlock mode to prevent accidental edits during operation
- Arm-and-run workflow with visual markers for “next” and “last run” cues
- Cue run actions via toolbar button and keyboard shortcuts (Space/Enter/Return when Cues tab is active)
- Cue execution recalls mapped presets on connected cameras and auto-advances to the next armed cue
Exposure and Image Controls
- Exposure modes: Auto, Manual, Shutter Priority, Iris Priority, Bright
- Iris, shutter, gain, and brightness adjustment
- Backlight compensation toggle
- White balance modes: Auto, Indoor, Outdoor, One Push, Manual
- Manual red/blue gain controls
NDI Video
- Optional NDI runtime integration (app works without NDI)
- NDI source discovery with polling-based reliability improvements
- Manual NDI source name entry for firewall-restricted environments
- Network interface binding for multi-homed systems
- Per-camera NDI receiver threads
- Video bandwidth modes: High/Low
- Video color format options: UYVY/BGRA/RGBA
- Play/pause video streaming per camera
- Timeout and staged recovery behavior for non-responsive NDI sources
Startup and Loading UX
- Deferred camera loading after window show
- Startup progress bar with milestone tracking (create/configure/initialized)
- “Connecting…” status updates that do not falsely advance completion
- Per-camera initialization completion tracking with duplicate-signal protection
- Startup watchdog timeout: stalled cameras fail cleanly and expose reconnect
Connection and Recovery
- Per-camera connection state (
connected/disconnected) with visual indicators - Automatic control enable/disable based on connection status
- Reconnect button shown for failed/disconnected cameras
- Graceful handling where one failed camera does not block others
USB Controller Support
- 60Hz polling with hotplug detection
- Axis mappings for PTZ/zoom control
- Button mappings for autofocus, camera switching, stop movement, brightness
- Configurable stop-on-camera-switch safety option
- Preferences dialog access from controller menu button
Preferences and Configuration
- Persistent JSON configuration for cameras and preferences
- Video default size, NDI settings, and controller preferences
- Single-instance mode option
- Save/load of per-camera settings and preset metadata
- Dedicated cue persistence in
cues.json(cue rows + camera column mappings)
Reliability and Error Handling
- Global exception handling to avoid hard crashes where possible
- Structured logging (console + optional file logging)
- NDI-unavailable fallback to IP-only workflows
- Threaded operations with signal/slot handoff for UI safety
UI and Usability
- Dark theme (qdarkstyle)
- Camera controls organized in collapsible sections
- Multi-tab main layout
- About dialog and update-check flow
- Popup/dialog policy aligned for clean window controls
Build and Distribution
- PyInstaller-based executable packaging
- PowerShell build script with installer/portable packaging flow
- Versioned build process support
Notes
- NDI features require compatible runtime/network configuration.
- VISCA camera behavior may vary by vendor firmware.
- For troubleshooting and validation workflows, see
README.mdandQUICKSTART.md.