Probleme mit abstürzenden Stream

Aus unerfindlichen Gründen war der Stream nicht wirklich stabil. Er ist immer wieder abgeschmiert und man musste den libcamera Befehl manuell neustarten. Da ergibt sich doch Automatisierungspotenzial, habe ich mir gedacht.

Autoneustart-Skript mit dem Bot erstellen

Um das schnell voranzutreibe, habe ich den Chatbot angeworfen und gleich einmal gefragt, wie so ein Skript aussehen könnte:

Und das ist das fertige bash-Skript:

#!/bin/bash
 
# Infinite loop to keep the process running
while true; do
  echo "Starting stream..."
  # Run the command
  libcamera-vid -t 0 --inline --listen --bitrate 3000000 --width 1920 --height 1080 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! flvmux ! rtmpsink location='rtmp://localhost/live/1234 live=1'
  
  # If the command exits, log it
  echo "Stream stopped. Restarting..."
  # Optionally, sleep for a second before restarting to prevent spamming if there's an immediate fail
  sleep 1
done
 

Es gibt auch gleich noch eine Anleitung dazu:

Wobei man hier sagen muss, dass das Skript auch genauso gerne mit bash restart_stream.sh startet.

Das “Stehaufmanderl”-Skript

Schauen wir uns das Skript in Action an. Nachdem man es gestartet hat, gebe ich ihm einmal einen “Tritt” (Strg + c) und siehe da, es steht wieder auf und der Stream werkelt munter weiter:

Ausblick

In den kommenden Tagen werde ich beobachten, wie stabil der Stream “meisen_aus_urfahr” durch das neue Skript geworden ist. Zumindest bisher scheint das Ergebnis vielversprechend zu sein. Weiters könnte das Skript auch noch die eine oder andere Verbesserung gebrauchen (Logging zum Beispiel), aber vorerst bin ich sehr zufrieden damit. Und es war auch interessant zu lernen, wie einfach so ein Skript sein kann, auch wenn eine große Schleife jetzt vielleicht auch nicht die eleganteste Lösung ist.