Umzug in eigenes Repo

This commit is contained in:
scriptos 2023-11-06 21:16:23 +01:00
parent 008df7f34b
commit acf534762e
2 changed files with 129 additions and 1 deletions

View File

@ -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
View 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