Files
vizionStreamer/scripts/README.md
T
2026-10-20 14:45:42 +02:00

189 lines
4.7 KiB
Markdown

# VizionStreamer Control Scripts
Diese Scripts ermöglichen die schnelle Steuerung von VizionStreamer über die Unix Domain Socket API.
**Copyright (c) 2025 Maik Jurischka**
Lizenziert unter CC BY-NC-SA 4.0 - https://creativecommons.org/licenses/by-nc-sa/4.0/
## Voraussetzung
VizionStreamer muss laufen:
```bash
cd /home/maik/CLionProjects/vizionStreamer
./build/vizionStreamer
```
## Schnellstart (Standard-Pipeline)
Die Standard-Pipeline `videoconvert ! autovideosink` ist bereits gesetzt. Einfach starten:
```bash
./scripts/start_stream.sh
```
Das Video wird lokal angezeigt. Zum Stoppen:
```bash
./scripts/stop_stream.sh
```
## Pipeline ändern
### Lokale Anzeige (Standard)
```bash
./scripts/set_pipeline_display.sh
./scripts/start_stream.sh
```
### UDP-Streaming (H.264)
```bash
# Standard: 192.168.1.100:5000
./scripts/set_pipeline_udp.sh
# Eigene IP/Port
./scripts/set_pipeline_udp.sh 192.168.1.50 5001
# Dann starten
./scripts/start_stream.sh
```
**Stream empfangen:**
```bash
gst-launch-1.0 udpsrc port=5000 ! application/x-rtp,encoding-name=H264 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosink
```
### Aufnahme in Datei
```bash
# Standard: /tmp/vizion_recording.mp4
./scripts/set_pipeline_file.sh
# Eigene Datei
./scripts/set_pipeline_file.sh /home/user/videos/recording.mp4
# Dann starten
./scripts/start_stream.sh
```
### MJPEG HTTP-Stream
```bash
# Standard: Port 8080
./scripts/set_pipeline_mjpeg.sh
# Eigener Port
./scripts/set_pipeline_mjpeg.sh 8090
# Dann starten
./scripts/start_stream.sh
```
**Stream ansehen:**
```bash
# Im Browser
firefox http://localhost:8080
# Mit FFplay
ffplay http://localhost:8080
```
## Status & Information
### Status abfragen
```bash
./scripts/get_status.sh
```
Zeigt:
- Streaming-Status (läuft/gestoppt)
- Aktuelle Pipeline
### Verfügbare Formate
```bash
./scripts/get_formats.sh
```
Zeigt alle verfügbaren Kamera-Auflösungen und Formate.
## Multi-Camera: alle Kameras auf einmal
`start_all_cameras.sh` erkennt alle angeschlossenen, von VIZION unterstützten
Kameras (via `vizion-ctl -l`, Fallback: `lsusb`/Cypress 04b4) und startet für
jede der Reihe nach eine `vizionStreamer`-Instanz mit eigenem Socket
(`/tmp/vizion_cam<idx>.sock`) und startet den Stream.
```bash
# Erkannte Kameras auflisten
./scripts/start_all_cameras.sh --list
# Alle Kameras per UDP streamen (Port 5000 + Kamera-Index)
./scripts/start_all_cameras.sh --udp 192.168.1.100 5000
# Alle Kameras als MJPEG-HTTP-Stream (Port 8080 + Kamera-Index)
./scripts/start_all_cameras.sh --mjpeg 8080
# Alle Kameras in Dateien aufnehmen (/tmp/cam<idx>.mp4)
./scripts/start_all_cameras.sh --file /home/user/recordings
# Lokale Anzeige
./scripts/start_all_cameras.sh --display
# Eigene Pipeline ({port} wird durch 5000+Kamera-Index ersetzt)
./scripts/start_all_cameras.sh --pipeline "videoconvert ! x264enc tune=zerolatency ! rtph264pay ! udpsink host=192.168.1.100 port={port}"
# Alle gestarteten Instanzen stoppen
./scripts/start_all_cameras.sh --stop
```
Ohne Modus-Option wird standardmäßig per UDP nach `127.0.0.1` gestreamt.
Das Script läuft im Vordergrund und stoppt mit `Ctrl+C` alle Instanzen
sauber (Stream stoppen + Prozess beenden). Logs: `/tmp/vizion_cam<idx>.log`.
## Typischer Workflow
```bash
# 1. VizionStreamer starten (Terminal 1)
./build/vizionStreamer
# 2. Status prüfen (Terminal 2)
./scripts/get_status.sh
# 3. Pipeline für UDP-Streaming setzen
./scripts/set_pipeline_udp.sh 192.168.1.100 5000
# 4. Streaming starten
./scripts/start_stream.sh
# 5. Stream empfangen (auf Zielrechner)
gst-launch-1.0 udpsrc port=5000 ! application/x-rtp,encoding-name=H264 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosink
# 6. Bei Bedarf stoppen
./scripts/stop_stream.sh
# 7. Pipeline ändern
./scripts/set_pipeline_display.sh
# 8. Erneut starten
./scripts/start_stream.sh
```
## Wichtige Hinweise
- Pipeline kann nur geändert werden, wenn Streaming gestoppt ist
- Standard-Pipeline ist bereits gesetzt - kein `set_pipeline` vor dem ersten Start nötig
- Mit `start_stream.sh` sofort loslegen!
- Alle Scripts benötigen `socat` (installieren mit: `sudo apt install socat`)
- Status-Scripts benötigen optional `python3` für formatierte JSON-Ausgabe
## Eigene Pipelines
Sie können jede beliebige GStreamer-Pipeline verwenden:
```bash
SOCKET="/tmp/vizion_control.sock"
echo '{"command":"set_pipeline","params":{"pipeline":"IHRE_PIPELINE"}}' | socat - UNIX-CONNECT:$SOCKET
```
Beispiele:
- `videoconvert ! xvimagesink` - Einfache lokale Anzeige
- `videoconvert ! x264enc ! flvmux ! rtmpsink location=rtmp://server/live/stream` - RTMP-Streaming
- `tee name=t ! queue ! videoconvert ! autovideosink t. ! queue ! x264enc ! filesink location=out.mp4` - Gleichzeitig anzeigen und aufnehmen