Skip to main content

A CLI to control NDI-capable PTZ cameras via a joystick.

Project description

ndi-ptz

This is a CLI to control an NDI-enabled PTZ camera with a joystick.

Installation

uv tool install ndi-ptz

# or
pip install ndi-ptz

You also need to install the NDI Runtime, unless you have the NDI Tools or the NDI SDK installed

For further options, like choco or brew, consult the DistroAV wiki.

Quick-Start

$ ndi-ptz list-sources
Looking for NDI sources in the next 5 seconds
TAIL_AIR_006666 (OBSBOT)

$ ndi-ptz list-joysticks
Looking for joysticks in the next 5 seconds
Nintendo Switch Pro Controller (0)

$ ndi-ptz control --source-name "TAIL_AIR_006666 (OBSBOT)" --joystick-instance 0

Supported Joysticks

Currently only the following joysticks are supported:

Nintendo Controller

Only the Nintendo Switch Pro Controller is supported and tested.

  • You must hold L and R constantly to control the PTZ.
  • Use the left stick to control pan (left/right) and tilt (up/down).
  • Use the right stick to control the zoom (up/down).
  • Press the right stick to return the camera to the home position.
  • Hold the A button to trigger the autofocus.

Xbox Controller

Only the Xbox Series X Controller was tested. On Mac, it only works when connected via Bluetooth.

  • You must hold L and R constantly to control the PTZ.
  • Use the left stick to control pan (left/right) and tilt (up/down).
  • Use the right stick to control the zoom (up/down).
  • Press the right stick to return the camera to the home position.
  • Hold the B button to trigger the autofocus.

PlayStation Controller

PlayStation controllers are not tested.

  • You must hold L and R constantly to control the PTZ.
  • Use the left stick to control pan (left/right) and tilt (up/down).
  • Use the right stick to control the zoom (up/down).
  • Press the right stick to return the camera to the home position.
  • Hold the O button to trigger the autofocus.

Development

This project is managed with UV.

Build & Publish

# edit the project version in pyproject.toml
uv sync
git commit -m "Prepare 0.1.5" .
git tag '0.1.5'
rm -rf dist
uv build
uv publish
git push --tags
git push

Legal

This code is provided under the terms and permissions granted by the MIT license.

NDI® is a registered trademark of Vizrt NDI AB.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ndi_ptz-0.1.5.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ndi_ptz-0.1.5-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file ndi_ptz-0.1.5.tar.gz.

File metadata

  • Download URL: ndi_ptz-0.1.5.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.0

File hashes

Hashes for ndi_ptz-0.1.5.tar.gz
Algorithm Hash digest
SHA256 c06e21b133392fbfe07e380b3cdad941a144d6dc95634957700885822e3928ba
MD5 e26f363f1e73f6bd0c808b86bc8b7765
BLAKE2b-256 be93a129ba7b9965fd413255216bf928761cc9789c39e3569c9698fa404058b1

See more details on using hashes here.

File details

Details for the file ndi_ptz-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: ndi_ptz-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.0

File hashes

Hashes for ndi_ptz-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 cec0ac722bc54052c648e67a5dd5b54c81deda7bdc51002981d89767c0cdc619
MD5 3b3355e47a5539036a151efecc3f1c60
BLAKE2b-256 3f2938f9920cd5a7087133854ca6cc6269789208827874d6deedcb60e42d7d1b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page