Single Camera Kiosk: NDI camera joystick
Operational reference for ndi camera joystick in Single Camera Kiosk.
NDI camera joystick
Adds direct NDI PTZ control from an on-screen touch/mouse pad and compatible USB/gamepad joysticks. This uses NDI receiver PTZ pan/tilt-speed and zoom-speed functions through the installed native NDI runtime. It does not crop the OBS picture or translate commands to VISCA/ONVIF. Connect controls discovers the selected configured NDI sender by exact name; ambiguous names are rejected. A metadata-only receiver avoids a second full video feed. The sender must be connected and advertise NDI PTZ support before movement is accepted.
Open PTZ / Camera PTZ, select the camera and choose Connect controls. Drag and hold the pad for pan/tilt; hold zoom +/− for zoom. Release to send stop; STOP disables USB movement too. Start at low speed and verify directions. For USB, press a joystick button so the browser detects it, open USB joystick, choose the device and axis/hold-button indices, then Enable USB movement. Center all mapped axes and release the hold button before the first movement. Hold the configured button to move; release to stop. Axis indices start at zero; −1 disables an axis. Axis inversion and speed are adjustable. Generic HID devices exposed by the browser Gamepad API are supported; proprietary serial controllers are not automatically mapped. Movement is never enabled automatically at startup.
Only one camera/session per app is controlled. Changing selection stops and disconnects the old camera. Selecting a different Program camera does not retarget the joystick. Commands are sequenced so late moves cannot override a later stop; movement updates have one pending request per browser session. Touch cancellation, pointer/keyboard release, lost browser focus, hidden tabs and USB removal send stop and disable USB input. An app-owned watchdog requests stop after approximately 0.5 seconds without a fresh move. Closing the application releases its receiver. These are best-effort network commands: app crashes or lost camera connectivity can prevent stop delivery; use the camera's own controls if needed. No independent service or worker is added.
The joystick targets this station’s saved NDI camera and does not require an RTSP analysis feed or AI setup. Customers must sign in, select an authorized event and have unlocked controls; administrators may test it while unlocked. Kiosk lock, event end, camera preparation and sign-out release control. Truck reservations deny kiosk movement. Taking joystick control disables AI tracking; existing admin PTZ/AI commands release the joystick. Customer/event/source changes invalidate prior sessions.
NDI API reference: https://docs.ndi.video/all/developing-with-ndi/sdk/ndi-recv
macOS kiosk setup: see MACOS.md. Use bash install-macos.command; optional login startup is explicit.
Need more help with this?
Search a specific symptom, review related guides below, or prepare a report with the app version, operating system and exact error. Guides describe the documented release; installed versions and subscription access can differ.
Prepare a support report