Umzug in eigenes Repo
This commit is contained in:
parent
008df7f34b
commit
acf534762e
12
README.md
12
README.md
@ -1,2 +1,12 @@
|
||||
# rtmp-stream-recorder
|
||||
# RTMP Stream Recorder für die Bash
|
||||
|
||||
Dies Skript ermöglicht die lokale Aufzeichnung von RTMP-Streams und speichert diese als *.mp4-Dateien ab. Das Skript überprüft zunächst, ob das Programm "ffmpeg" installiert ist und installiert es gegebenenfalls. Es erstellt dann ein Downloadverzeichnis und bietet dem Benutzer die Möglichkeit, zwischen verschiedenen Streams auszuwählen. Bei Auswahl eines Streams wird die Aufzeichnung gestartet und im Downloadverzeichnis gespeichert. Das Skript enthält auch eine Funktion zum Abbrechen der Aufzeichnung und bietet die Option, die zuletzt erstellte Datei zu löschen.
|
||||
|
||||
Das Skript bietet die folgenden Funktionen:
|
||||
|
||||
- Auswahl Streams (oder Eingabe einer benutzerdefinierten Stream-URL und Stream-Namen)
|
||||
- Aufzeichnung des ausgewählten Streams und Speicherung im angegebenen Downloadverzeichnis
|
||||
- Überprüfung und Installation von "ffmpeg", wenn es nicht vorhanden ist
|
||||
- Abbruch der Aufzeichnung per Interrupt (INT-Signal) mit der Möglichkeit, die zuletzt erstellte Datei zu löschen
|
||||
|
||||
Aufruf: ./bash erde-stream-recorder.sh
|
||||
|
118
erde-stream-recorder.sh
Normal file
118
erde-stream-recorder.sh
Normal file
@ -0,0 +1,118 @@
|
||||
#!/bin/bash
|
||||
# Script Name: erde-stream-recorder.sh
|
||||
# Beschreibung: Zeichnet den Euer.TV Stream lokal auf und speichert diesen als *.mp4-File ab.
|
||||
# Aufruf: ./bash erde-stream-recorder.sh
|
||||
# Autor: Patrick Asmus
|
||||
# Web: https://www.media-techport.de
|
||||
# Git-Reposit.: https://git.media-techport.de/scriptos/private-script-collection.git
|
||||
# Version: 1.2.3
|
||||
# Datum: 10.10.2023
|
||||
# Modifikation: Texte angepasst
|
||||
#####################################################
|
||||
|
||||
# Signal-Handler für das INT-Signal (Interrupt)
|
||||
function handle_interrupt() {
|
||||
echo "Aufzeichnung abgebrochen."
|
||||
echo "Möchten Sie die zuletzt erstellte Datei löschen? (Y/n)"
|
||||
read -n 1 -r response
|
||||
if [[ "$response" =~ ^[Yy]$ ]]; then
|
||||
rm -f "$output_file"
|
||||
echo "Datei gelöscht: $output_file"
|
||||
fi
|
||||
exit 0
|
||||
}
|
||||
|
||||
# Überprüfung, ob ffmpeg installiert ist
|
||||
if ! command -v ffmpeg &> /dev/null; then
|
||||
echo "ffmpeg ist nicht installiert. Das Skript wird ffmpeg installieren."
|
||||
sudo apt update
|
||||
sudo apt install -y ffmpeg
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Fehler beim Installieren von ffmpeg. Beenden."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Downloadpfad
|
||||
download_path="/home/downloads/erde-streams"
|
||||
mkdir -p $download_path
|
||||
|
||||
# Stream-Informationen Variablen
|
||||
stream1_name="Euer.TV-Stream_Main"
|
||||
stream1_url="rtmp://rtmp21.euer.tv/live/1080p"
|
||||
|
||||
stream2_name="Euer.TV-Stream_Donnerwolke"
|
||||
stream2_url="rtmp://hls21.euer.tv/source/donnerwolke"
|
||||
|
||||
stream3_name="Euer.TV-Stream_SchiWaGoA"
|
||||
stream3_url="rtmp://hls21.euer.tv/source/schiwagoa"
|
||||
|
||||
# Funktion zur Aufzeichnung eines Streams
|
||||
function record_stream() {
|
||||
stream_name="$1"
|
||||
stream_url="$2"
|
||||
|
||||
while true; do
|
||||
timestamp=$(date +'%Y%m%d%H%M%S')
|
||||
output_file="$download_path/$stream_name-$timestamp.mp4"
|
||||
echo "Starte Aufzeichnung von $stream_name..."
|
||||
|
||||
while true; do
|
||||
ffmpeg -i "$stream_url" -c copy "$output_file"
|
||||
ret_code=$?
|
||||
if [ $ret_code -eq 0 ]; then
|
||||
echo "Die Aufzeichnung von $stream_name wurde abgeschlossen und als $output_file gespeichert."
|
||||
break
|
||||
else
|
||||
echo "Fehler bei der Aufzeichnung von $stream_name (Fehlercode: $ret_code)."
|
||||
echo "Warte 3 Sekunden, um erneut zu versuchen..."
|
||||
sleep 3
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Drücken Sie 'Q', um die Aufzeichnung zu beenden, oder 'Enter', um fortzufahren..."
|
||||
read -n 1 -s -r key
|
||||
if [ "$key" = "Q" ] || [ "$key" = "q" ]; then
|
||||
echo "Aufzeichnung beendet."
|
||||
exit 0
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Stream-Abbruch beim INT-Signal (Interrupt) behandeln
|
||||
trap handle_interrupt INT
|
||||
|
||||
# Menü für Stream-Auswahl
|
||||
while true; do
|
||||
echo "Bitte wählen Sie einen Stream aus:"
|
||||
echo "1. $stream1_name"
|
||||
echo "2. $stream2_name"
|
||||
echo "3. $stream3_name"
|
||||
echo "4. Eigenen Stream eingeben"
|
||||
echo "5. Beenden"
|
||||
read -p "Ihre Auswahl: " choice
|
||||
|
||||
case "$choice" in
|
||||
1)
|
||||
record_stream "$stream1_name" "$stream1_url"
|
||||
;;
|
||||
2)
|
||||
record_stream "$stream2_name" "$stream2_url"
|
||||
;;
|
||||
3)
|
||||
record_stream "$stream3_name" "$stream3_url"
|
||||
;;
|
||||
4)
|
||||
read -p "Geben Sie die URL des Streams ein: " custom_url
|
||||
read -p "Geben Sie einen Namen für den Stream ein: " custom_name
|
||||
record_stream "$custom_name" "$custom_url"
|
||||
;;
|
||||
5)
|
||||
echo "Aufzeichnung beendet."
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Ungültige Auswahl. Bitte erneut versuchen."
|
||||
;;
|
||||
esac
|
||||
done
|
Loading…
Reference in New Issue
Block a user