118 lines
3.6 KiB
Bash
118 lines
3.6 KiB
Bash
#!/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 |