Real-Time Annotation and Stream Processing Interface
Project description
rtaspi - Real-Time Annotation and Stream Processing ✍
rtaspi to system do wykrywania, zarządzania i streamowania z lokalnych oraz zdalnych urządzeń audio i wideo. Umożliwia łatwe udostępnianie strumieni z kamer i mikrofonów w różnych protokołach (RTSP, RTMP, WebRTC).
Główne funkcje
- Automatyczne wykrywanie lokalnych urządzeń wideo (kamery) i audio (mikrofony)
- Wykrywanie zdalnych urządzeń sieciowych (kamery IP, mikrofony IP) poprzez protokoły ONVIF, UPnP i mDNS
- Streamowanie z urządzeń lokalnych poprzez RTSP, RTMP i WebRTC
- Proxy strumieni z urządzeń zdalnych
- Transkodowanie strumieni w czasie rzeczywistym
- Centralny system komunikacji między modułami (MCP - Module Communication Protocol)
Wymagania systemowe
- Python 3.8 lub nowszy
- FFmpeg 4.0 lub nowszy
- GStreamer 1.14 lub nowszy (dla WebRTC)
- NGINX z modułem RTMP (dla RTMP)
Zależności systemowe
Ubuntu/Debian:
sudo apt update
sudo apt install ffmpeg gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly nginx libnginx-mod-rtmp v4l-utils
macOS:
brew install ffmpeg gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly nginx
Windows:
Pobierz i zainstaluj:
Instalacja
- Sklonuj repozytorium:
git clone https://github.com/rt-asp/rtaspi.git
cd rtaspi
- Utwórz i aktywuj wirtualne środowisko:
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
- Zainstaluj zależności:
pip install -r requirements.txt
Konfiguracja
Konfiguracja systemu znajduje się w pliku config.yaml. Domyślna konfiguracja zostanie utworzona automatycznie przy pierwszym uruchomieniu, możesz ją później dostosować do swoich potrzeb.
Przykładowa konfiguracja:
system:
storage_path: 'storage'
log_level: 'INFO'
local_devices:
enable_video: true
enable_audio: true
auto_start: false
scan_interval: 60
rtsp_port_start: 8554
rtmp_port_start: 1935
webrtc_port_start: 8080
network_devices:
enable: true
scan_interval: 60
discovery_enabled: true
discovery_methods:
- 'onvif'
- 'upnp'
- 'mdns'
rtsp_port_start: 8654
rtmp_port_start: 2935
webrtc_port_start: 9080
streaming:
rtsp:
port_start: 8554
rtmp:
port_start: 1935
webrtc:
port_start: 8080
stun_server: 'stun://stun.l.google.com:19302'
turn_server: ''
turn_username: ''
turn_password: ''
Struktura projektu
rtaspi/
├── core/ # Komponenty podstawowe
│ ├── config.py # Obsługa konfiguracji
│ ├── logging.py # Konfiguracja logowania
│ ├── mcp.py # Broker komunikacji międzymodułowej
│ └── utils.py # Narzędzia pomocnicze
├── device_managers/ # Zarządzanie urządzeniami
│ ├── base.py # Podstawowa klasa menedżera
│ ├── local_devices.py # Menedżer lokalnych urządzeń
│ ├── network_devices.py # Menedżer zdalnych urządzeń sieciowych
│ └── utils/
│ ├── device.py # Klasy bazowe dla urządzeń
│ ├── discovery.py # Wykrywanie urządzeń (ONVIF, UPnP, mDNS)
│ └── protocols.py # Obsługa protokołów streamingu
├── streaming/ # Obsługa streamingu
│ ├── rtsp.py # Obsługa protokołu RTSP
│ ├── rtmp.py # Obsługa protokołu RTMP
│ ├── webrtc.py # Obsługa protokołu WebRTC
│ └── utils.py # Narzędzia pomocnicze do streamingu
├── tests/ # Testy jednostkowe
│ ├── test_local_devices.py # Testy menedżera lokalnych urządzeń
│ ├── test_network_devices.py # Testy menedżera zdalnych urządzeń
│ ├── test_discovery.py # Testy wykrywania urządzeń
│ └── test_streaming.py # Testy streamingu
├── main.py # Główny plik uruchomieniowy
├── config.yaml # Plik konfiguracyjny
└── requirements.txt # Zależności projektu
Uruchomienie
- Uruchom główny skrypt:
python main.py
- Opcjonalnie, możesz podać ścieżkę do pliku konfiguracyjnego:
python main.py -c /sciezka/do/config.yaml
Protokół komunikacyjny MCP
System używa wewnętrznego protokołu komunikacyjnego MCP (Module Communication Protocol) do wymiany informacji między modułami. Protokół opiera się na wzorcu publikuj/subskrybuj (pub/sub), gdzie moduły mogą publikować wiadomości na określone tematy i subskrybować tematy, aby otrzymywać wiadomości.
Przykładowe tematy MCP:
local_devices/devices- Informacje o wykrytych lokalnych urządzeniachlocal_devices/stream/started- Informacja o uruchomieniu strumienia z lokalnego urządzenianetwork_devices/devices- Informacje o wykrytych urządzeniach sieciowychcommand/local_devices/scan- Komenda do skanowania lokalnych urządzeńcommand/network_devices/add_device- Komenda do dodania zdalnego urządzenia
Używanie API
System udostępnia API do zarządzania urządzeniami i strumieniami. Poniżej znajdują się przykłady użycia API w kodzie Python:
from core.mcp import MCPBroker, MCPClient
# Utwórz klienta MCP
broker = MCPBroker()
client = MCPClient(broker, client_id="my_client")
# Subskrybuj tematy
client.subscribe("local_devices/devices", handler=handle_devices)
client.subscribe("local_devices/stream/started", handler=handle_stream_started)
# Wysyłaj komendy
client.publish("command/local_devices/scan", {})
# Uruchom strumień z urządzenia
client.publish("command/local_devices/start_stream", {
"device_id": "video:/dev/video0",
"protocol": "rtsp"
})
# Dodaj zdalne urządzenie
client.publish("command/network_devices/add_device", {
"name": "Kamera IP",
"ip": "192.168.1.100",
"port": 554,
"username": "admin",
"password": "admin",
"type": "video",
"protocol": "rtsp",
"paths": ["cam/realmonitor"]
})
Testy
Uruchomienie testów jednostkowych:
pytest -v tests/
Licencja
Ten projekt jest udostępniany na licencji Apache 2. Zobacz plik LICENSE, aby uzyskać więcej informacji.
Autorzy
- Zespół rtaspi
Współpraca
Zachęcamy do współpracy przy rozwoju projektu. Zapraszamy do zgłaszania problemów (issues) i propozycji zmian (pull requests).
- Modular Documentation made possible by the FlatEdit project.
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 rtaspi-0.1.20.tar.gz.
File metadata
- Download URL: rtaspi-0.1.20.tar.gz
- Upload date:
- Size: 120.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c644b0875af2d9108c9718ddd42bac83ee2b2f2315b6934d5cefc28b945d165
|
|
| MD5 |
349a418e8cf6fccc388cabdf7758e36d
|
|
| BLAKE2b-256 |
7d88f89ddd4205f149af726888fad5fe1ba8fc85b623145c58ba0f54e0a9bd69
|
File details
Details for the file rtaspi-0.1.20-py3-none-any.whl.
File metadata
- Download URL: rtaspi-0.1.20-py3-none-any.whl
- Upload date:
- Size: 51.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b9d315dbe13db14f80499e5d7d076dc6599819cdb84a83d356473a6e3b3b4b5
|
|
| MD5 |
69a440977631d9b8cb0516f7249bb6c7
|
|
| BLAKE2b-256 |
d990c1bdc68e91d66054f37bb8bd78c0876e3eaceccb46ba80b88421a025706f
|