Discover RTSP cameras on your LAN and auto-configure when only one device is present
Project description
rtspfinder
Discover RTSP IP cameras on your local network, try common default credentials, and automatically save configuration when exactly one device is found.
admin:123456 is tried first, followed by a built-in list of common camera usernames and passwords.
Install
From PyPI:
pip install rtspfinder
From source:
pip install .
# optional: better multi-interface subnet detection
pip install rtspfinder[netifaces]
Quick start (auto mode)
With no arguments, rtspfinder:
- Uses saved config if present (
~/.config/rtspfinder/config.json) and connects to the stream - Otherwise scans the LAN for RTSP (port 554)
- If one RTSP host is found, probes paths/credentials, writes config, and opens the stream
- If several hosts exist but only one authenticates, still auto-configures and connects
In-terminal video (like ani-cli)
By default, when run from a TTY, video plays inside the terminal using mpv (--vo=kitty, tct, or caca) — same idea as ani-cli’s --no-detach in-terminal mpv.
brew install mpv ffmpeg # required for TTY video
brew install chafa # optional ASCII fallback
rtspfinder # discover → save → play in TTY
rtspfinder --tty # force TTY even if auto-detection differs
rtspfinder --gui # separate window (ffplay/mpv)
rtspfinder
Force a new scan:
rtspfinder --refresh
Print the saved URL for scripts:
rtspfinder --url
Skip auto-connect:
rtspfinder --no-connect
Camera controls (YCC365 Plus / Ginatex HTTP + ONVIF)
Per YCC365 docs: HTTP 80, RTSP 554, ONVIF 80.
Many of these cameras (including Ginatex/TAS-Tech firmware) expose ONVIF PTZ over HTTP without auth — same approach as the PTZ-YCC365 Home Assistant component.
# Discover HTTP/ONVIF endpoints (uses saved config if present)
rtspfinder controls --discover-only --save
# Interactive PTZ in the terminal: w/a/s/d move, x stop, q quit
rtspfinder controls
More commands
| Command | Description |
|---|---|
rtspfinder --discover-only |
List hosts with port 554 open |
rtspfinder --host 192.168.1.100 -v |
Probe one camera |
rtspfinder --show-config |
Show saved configuration |
rtspfinder --no-auto |
Scan all hosts without auto-save rules |
rtspfinder --no-save |
Discover but do not write config file |
Config file permissions are set to 600 where supported.
Python API
from rtspfinder import auto_configure, load_config
result = auto_configure()
if result.configured:
print(result.config.url)
Security
Only use on networks and devices you own or are authorized to test. Change default camera passwords after setup.
Publish to PyPI
pip install build twine
python -m build
twine check dist/*
twine upload dist/*
Use PyPI API tokens; do not commit credentials.
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rtspfinder-1.4.1.tar.gz.
File metadata
- Download URL: rtspfinder-1.4.1.tar.gz
- Upload date:
- Size: 27.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35e509dd95b8f6ba075472fe06348bdf6a261fe76d922d2ef7e0463fa9f7a295
|
|
| MD5 |
0c88bfa81db06cb3e9c744bd4cc51309
|
|
| BLAKE2b-256 |
00d219fd799f1e504ce3aef825f708c69f208de8c2314e60f9cc6b2289b9b742
|
File details
Details for the file rtspfinder-1.4.1-py3-none-any.whl.
File metadata
- Download URL: rtspfinder-1.4.1-py3-none-any.whl
- Upload date:
- Size: 29.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3df2e505f00dc36836ce0a29dcc1f502cf435e9ed6a32a4de2931b812cbe7f4
|
|
| MD5 |
e06e6a8fa2e87161955ec463c9a0f776
|
|
| BLAKE2b-256 |
f48de89c52e1e078ea8cf513705d117d3f0b5b69dc6f2e1095b4357eeccf6464
|