ONVIF (Open Network Video Interface Forum) is a global standard for the interface of IP-based physical security products, including network cameras, video recorders, and related systems.
Behind the scenes, ONVIF communication relies on SOAP (Simple Object Access Protocol); an XML-based messaging protocol with strict schema definitions (WSDL/XSD). SOAP ensures interoperability, but when used directly it can be verbose, complex, and error-prone.
This library simplifies that process by wrapping SOAP communication into a clean, Pythonic API. You no longer need to handle low-level XML parsing, namespaces, or security tokens manually; the library takes care of it, letting you focus on building functionality.
Python 3.10 or higher is required.
- zeep → SOAP client for ONVIF communication.
- requests → HTTP library for network requests.
- pyreadline3 → Only installed on Windows (
win32) for CLI auto-completion.
From official PyPI:
pip install --upgrade onvif-pythonOr install using pipx for an isolated environment:
pipx install git+https://github.com/nirsimetri/onvif-python
Or clone this repository and install locally:
git clone https://github.com/nirsimetri/onvif-python
cd onvif-python
pip install .Once the installation is successful, you can also immediately access the ONVIF CLI via the terminal using:
onvif --helpTo use the ONVIF CLI without installing Python or additional dependencies, download a prebuilt binary for your platform from the GitHub Releases page.
Each release includes downloadable binary assets for supported platforms and architectures. Choose the appropriate binary from the table below:
| Platform | Architecture | Download |
|---|---|---|
| AMD64 (64-bit) | onvif-linux-amd64.zip | |
| ARM64 (aarch64) | onvif-linux-arm64.zip | |
| x64 (64-bit) | onvif-windows-win64.zip | |
| x86 (32-bit) | onvif-windows-win32.zip | |
| ARM64 | onvif-windows-arm64.zip | |
| Intel (AMD64) | onvif-macos-amd64.zip | |
| Apple Silicon (ARM64) | onvif-macos-arm64.zip |
For complete guide, including usage examples and API references, please visit the Documentation Site.
This project is licensed under the MIT License. See LICENSE for details.