add GStreamer helper scripts
This commit is contained in:
151
scripts/README.md
Normal file
151
scripts/README.md
Normal file
@@ -0,0 +1,151 @@
|
||||
# VizionStreamer Control Scripts
|
||||
|
||||
Diese Scripts ermöglichen die schnelle Steuerung von VizionStreamer über die Unix Domain Socket API.
|
||||
|
||||
## 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.
|
||||
|
||||
## 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
|
||||
6
scripts/get_formats.sh
Executable file
6
scripts/get_formats.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
# Get available camera formats
|
||||
|
||||
SOCKET="/tmp/vizion_control.sock"
|
||||
|
||||
echo '{"command":"get_formats"}' | socat - UNIX-CONNECT:$SOCKET | python3 -m json.tool 2>/dev/null || echo '{"command":"get_formats"}' | socat - UNIX-CONNECT:$SOCKET
|
||||
6
scripts/get_status.sh
Executable file
6
scripts/get_status.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
# Get streaming status
|
||||
|
||||
SOCKET="/tmp/vizion_control.sock"
|
||||
|
||||
echo '{"command":"get_status"}' | socat - UNIX-CONNECT:$SOCKET | python3 -m json.tool 2>/dev/null || echo '{"command":"get_status"}' | socat - UNIX-CONNECT:$SOCKET
|
||||
10
scripts/set_pipeline_display.sh
Executable file
10
scripts/set_pipeline_display.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
# Set pipeline for local display (default)
|
||||
|
||||
SOCKET="/tmp/vizion_control.sock"
|
||||
|
||||
echo "Setting display pipeline (default)..."
|
||||
echo '{"command":"set_pipeline","params":{"pipeline":"videoconvert ! autovideosink"}}' | socat - UNIX-CONNECT:$SOCKET
|
||||
|
||||
echo ""
|
||||
echo "Pipeline set. Start display with start_stream.sh"
|
||||
12
scripts/set_pipeline_file.sh
Executable file
12
scripts/set_pipeline_file.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
# Set pipeline for recording to file
|
||||
|
||||
SOCKET="/tmp/vizion_control.sock"
|
||||
FILE="${1:-/tmp/vizion_recording.mp4}"
|
||||
|
||||
echo "Setting file recording pipeline to $FILE..."
|
||||
echo "{\"command\":\"set_pipeline\",\"params\":{\"pipeline\":\"videoconvert ! x264enc ! mp4mux ! filesink location=$FILE\"}}" | socat - UNIX-CONNECT:$SOCKET
|
||||
|
||||
echo ""
|
||||
echo "Pipeline set. Start recording with start_stream.sh"
|
||||
echo "Recording will be saved to: $FILE"
|
||||
12
scripts/set_pipeline_mjpeg.sh
Executable file
12
scripts/set_pipeline_mjpeg.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
# Set pipeline for MJPEG HTTP streaming
|
||||
|
||||
SOCKET="/tmp/vizion_control.sock"
|
||||
PORT="${1:-8080}"
|
||||
|
||||
echo "Setting MJPEG HTTP streaming pipeline on port $PORT..."
|
||||
echo "{\"command\":\"set_pipeline\",\"params\":{\"pipeline\":\"videoconvert ! jpegenc ! multipartmux ! tcpserversink host=0.0.0.0 port=$PORT\"}}" | socat - UNIX-CONNECT:$SOCKET
|
||||
|
||||
echo ""
|
||||
echo "Pipeline set. Start streaming with start_stream.sh"
|
||||
echo "View stream in browser: http://localhost:$PORT"
|
||||
14
scripts/set_pipeline_udp.sh
Executable file
14
scripts/set_pipeline_udp.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
# Set pipeline for UDP streaming (H.264)
|
||||
|
||||
SOCKET="/tmp/vizion_control.sock"
|
||||
HOST="${1:-192.168.1.100}"
|
||||
PORT="${2:-5000}"
|
||||
|
||||
echo "Setting UDP streaming pipeline to $HOST:$PORT..."
|
||||
echo "{\"command\":\"set_pipeline\",\"params\":{\"pipeline\":\"videoconvert ! x264enc tune=zerolatency bitrate=2000 ! rtph264pay ! udpsink host=$HOST port=$PORT\"}}" | socat - UNIX-CONNECT:$SOCKET
|
||||
|
||||
echo ""
|
||||
echo "Pipeline set. Start streaming with start_stream.sh"
|
||||
echo "To receive stream on target machine:"
|
||||
echo " gst-launch-1.0 udpsrc port=$PORT ! application/x-rtp,encoding-name=H264 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosink"
|
||||
9
scripts/start_stream.sh
Executable file
9
scripts/start_stream.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
# Quick start script - starts streaming with default pipeline
|
||||
|
||||
SOCKET="/tmp/vizion_control.sock"
|
||||
|
||||
echo "Starting stream with default pipeline (videoconvert ! autovideosink)..."
|
||||
echo '{"command":"start_stream"}' | socat - UNIX-CONNECT:$SOCKET
|
||||
|
||||
echo "Stream started. Use stop_stream.sh to stop."
|
||||
7
scripts/stop_stream.sh
Executable file
7
scripts/stop_stream.sh
Executable file
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
# Stop streaming
|
||||
|
||||
SOCKET="/tmp/vizion_control.sock"
|
||||
|
||||
echo "Stopping stream..."
|
||||
echo '{"command":"stop_stream"}' | socat - UNIX-CONNECT:$SOCKET
|
||||
Reference in New Issue
Block a user