onvif-zeep-async
Async Python Client for ONVIF Camera
Decision gist · record as of 2026-08-14
Yes. Active maintenance, low install friction, permissive MIT license, no known vulnerabilities, and a clear async-first design make this a solid choice for Python 3.10+ projects that need ONVIF camera control. Install if you're building asyncio-based camera management or monitoring; skip if you need synchronous I/O or support for Python versions below 3.10.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.10 or newer; camera must be reachable on the network and support ONVIF protocol.
- Low friction: pure Python wheel with five runtime dependencies (aiohttp, httpx, zeep, ciso8601, yarl).
- Active maintenance—last commit 2026-08-10, release 39 days old, no archived status.
License · maintenance · safety
MIT (permissive) — MIT license is permissive; you can use, modify, and distribute this package with minimal restrictions in commercial or open-source projects.
last release 2026-07-06 (39 days) · last repo commit 2026-08-10 · 49 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 162,416 downloads/mo, #10,604 on PyPI
Alternatives
Verify before relying
pip install onvif-zeep-async
import asyncio
from onvif import ONVIFCamera
async def main():
cam = ONVIFCamera('192.168.0.2', 80, 'user', 'passwd')
await cam.update_xaddrs()
resp = await cam.devicemgmt.GetHostname()
print(resp.Name)
await cam.close()
asyncio.run(main())- Whether bundled WSDL files cover all ONVIF camera models or only a subset of the ONVIF specification.
- Performance characteristics when managing multiple concurrent camera connections.
- Compatibility with non-standard ONVIF implementations or vendor-specific extensions.
What it is and what it does
This package provides an async Python client for ONVIF IP cameras, wrapping the zeep SOAP/WSDL engine with aiohttp for fully non-blocking network I/O. Every camera operation—hostname retrieval, PTZ control, stream configuration—is awaitable, making it suitable for concurrent camera management in asyncio applications. The package bundles WSDL files so you don't need to download them separately, and it handles WS-Security authentication (with optional digest encryption), clock skew compensation, and NAT URL rewriting for cameras behind port forwards.
You instantiate an ONVIFCamera with IP, port, and credentials, call update_xaddrs() to discover available services, then invoke operations like devicemgmt.GetHostname() or ptz.GetConfiguration() as async methods. The package exposes every ONVIF operation defined in the bundled WSDLs and lets you create custom services if needed. It depends on aiohttp for transport, zeep for SOAP/WSDL parsing, ciso8601 for fast timestamp parsing, and yarl for URL handling.
Use it for
- Monitor and control multiple IP cameras concurrently in a single asyncio event loop without blocking.
- Retrieve camera metadata (hostname, system time, network config) and configure settings like date/time or hostname.
- Automate PTZ (pan-tilt-zoom) camera movements and stream URI discovery for video playback.
- Build a camera management dashboard or integration layer that queries many cameras in parallel.
- Handle cameras behind NAT by rewriting advertised URLs to match your port-forward configuration.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
Active maintenance, low install friction, permissive MIT license, no known vulnerabilities, and a clear async-first design make this a solid choice for Python 3.10+ projects that need ONVIF camera control. Install if you're building asyncio-based camera management or monitoring; skip if you need synchronous I/O or support for Python versions below 3.10.
Install
onvif-zeep-async on PyPI
Before you install
Low friction: pure Python wheel with five runtime dependencies (aiohttp, httpx, zeep, ciso8601, yarl). Active maintenance—last commit 2026-08-10, release 39 days old, no archived status.
Requires Python 3.10 or newer; camera must be reachable on the network and support ONVIF protocol.
License in practice
MIT license is permissive; you can use, modify, and distribute this package with minimal restrictions in commercial or open-source projects.
Quickstart
pip install onvif-zeep-async
import asyncio
from onvif import ONVIFCamera
async def main():
cam = ONVIFCamera('192.168.0.2', 80, 'user', 'passwd')
await cam.update_xaddrs()
resp = await cam.devicemgmt.GetHostname()
print(resp.Name)
await cam.close()
asyncio.run(main())
Verify before relying
- Whether bundled WSDL files cover all ONVIF camera models or only a subset of the ONVIF specification.
- Performance characteristics when managing multiple concurrent camera connections.
- Compatibility with non-standard ONVIF implementations or vendor-specific extensions.
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release >=3.10 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 5 packagesaiohttphttpxzeepciso8601yarl |
| Maintenance | Actively maintained 39 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 162,416 / month, #10,604 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
Evidence: onvif_zeep_async-4.2.1-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “ONVIF camera client async”
- onvif-zeep-asyncAsync Python client for ONVIF IP cameras using asyncio and aiohttp,…
- reolink-aioAsync Python client for Reolink IP NVR and camera devices, supporting…
- motioneye-clientAn async Python client library for querying and controlling motionEye…
Give your agent the search over MCP, or paste the wish link into any chat.
More Networking packages
h11 is a pure-Python HTTP/1.1 protocol implementation that handles parsing and serializing HTTP messages without any built-in I/O, letting you integrate it with any network layer you choose.
psutil retrieves real-time information about running processes and system resources (CPU, memory, disks, network, sensors) across multiple operating systems, enabling system monitoring, process profiling, and resource management.
pyOpenSSL wraps OpenSSL's SSL/TLS functionality for Python, providing high-level connection objects and certificate handling through a Python-friendly interface around OpenSSL's cryptographic operations.
uvloop is a drop-in replacement for Python's built-in asyncio event loop, implemented in Cython and using libuv, that accelerates async I/O operations.
execnet lets you spawn and communicate with Python interpreters across local processes, remote hosts, and different platforms, using a simple API for task distribution and inter-process messaging.
However, the aging maintenance status (275 days since last release) means you should verify it meets your concurrency and performance needs before committing to a…
PyZMQ provides Python bindings for ZeroMQ (ØMQ), a lightweight messaging library that enables fast, asynchronous communication between distributed processes and applications.
See also pyimouapi · reolink-aio · zeep · pytapo · aiohttp · motioneye-client · netsuite · aiobotocore · aiosignal · netsuitesdk