Ich habe ähnliche Lösung wie diese Restarting ffmpeg process using monit verwendet, um meine ffmpeg Stream neu starten, falls es aus irgendeinem Grund fehlschlägt. Denken Sie daran, es ist nicht doppelt Problem/Frage, weil ich andere Probleme im Gegensatz zu dem Beispiel Frage/Lösung Restarting ffmpeg process using monit, die ich unten erklären werde. So, hier ist meine monit Konfiguration:Neustart ffmpeg Prozess mit monit wenn TOTAL CPU ist weniger als 1%
check process FFMPEGStream with pidfile PATH-to-file/streampid.pid
start program = "PATH-to-file/streambash.sh restart"
stop program = "PATH-to-file/streambash.sh stop"
if TOTAL CPU is less than 1% for 10 cycles then restart
Hier ist meine streambash.sh Datei:
#!/bin/bash
pid_file="PATH-to-file/streampid.pid"
case "$1" in
restart)
PATH-to-file/streambash.sh stop
PATH-to-file/streambash.sh start
;;
start)
rm $pid_file
/usr/bin/ffmpeg -i "INPUT-PATH" -c:v libx264 -b:v 900k -preset ultrafast -aspect 16:9 -s 640x376 -strict experimental -c:a aac -b:a 96k -f flv "RTMP-PATH" &> /dev/null &
ch_pid=$!
echo "Start Stream1: ffmpeg = $ch_pid";
echo $ch_pid > $pid_file
;;
stop)
echo "Stop ffmpeg Stream1";
kill `cat $pid_file` &> /dev/null
;;
*)
echo "Usage: PATH-to-file/streambash.sh {start|stop|restart}"
exit 1
;;
esac
exit 0
echo $pid_file
Monit kann die Bash-Datei erfolgreich starten, aber wenn diese Bedingung „, wenn TOTAL CPU weniger als 1 % für 10 Zyklen dann Neustart " ist in Monit-Konfiguration abgestimmt, es versucht, neu zu starten, gibt es Fehler, dass Prozess nicht ausgeführt wird. Aber tatsächlich läuft der ffmpeg-Prozess immer noch im Hintergrund und ich kann sehen, dass der Stream live auf meiner Website ist. Hier sind monit Protokolle:
[CET Jan 10 12:55:02] error : 'FFMPEGStream' total cpu usage of 0.4% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:07] error : 'FFMPEGStream' total cpu usage of 0.0% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:12] error : 'FFMPEGStream' total cpu usage of 0.0% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:17] error : 'FFMPEGStream' total cpu usage of 0.4% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:22] error : 'FFMPEGStream' total cpu usage of 0.9% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:27] error : 'FFMPEGStream' total cpu usage of 0.9% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:32] error : 'FFMPEGStream' total cpu usage of 0.0% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:37] error : 'FFMPEGStream' total cpu usage of 0.0% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:42] error : 'FFMPEGStream' total cpu usage of 0.0% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:47] error : 'FFMPEGStream' total cpu usage of 0.4% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:50] info : 'FFMPEGStream' trying to restart
[CET Jan 10 12:55:50] info : 'FFMPEGStream' stop: PATH-to-file/streambash.sh
[CET Jan 10 12:55:51] info : 'FFMPEGStream' start: PATH-to-file/streambash.sh
[CET Jan 10 12:55:56] error : 'FFMPEGStream' process is not running
[CET Jan 10 12:55:58] info : 'FFMPEGStream' trying to restart
[CET Jan 10 12:55:58] info : 'FFMPEGStream' start: PATH-to-file/streambash.sh
[CET Jan 10 12:56:04] error : 'FFMPEGStream' process is not running
[CET Jan 10 12:56:04] info : 'FFMPEGStream' trying to restart
[CET Jan 10 12:56:04] info : 'FFMPEGStream' start: PATH-to-file/streambash.sh
[CET Jan 10 12:56:09] error : 'FFMPEGStream' process is not running
[CET Jan 10 12:56:09] info : 'FFMPEGStream' trying to restart
[CET Jan 10 12:56:09] info : 'FFMPEGStream' start: PATH-to-file/streambash.sh
Monit halten versucht, den Prozess neu zu starten und auf jedem erneuten Versuch, gibt sie ein neues pid zum PATH-to-file/streampid.pid, aber wie ich sagte, es scheint, ist es irgendwie kann den tatsächlichen ffmpeg stream/pid stoppen, der im Hintergrund läuft.
Warum nicht schön oder Cgroups verwenden? –
Mein Problem ist nicht CPU-Behandlung, mein Problem ist Prozess wird nicht neu gestartet oder zumindest nicht wie in monit gestartet, wenn nach seiner nicht ausgeführt wird. CPU-Nutzung ist nur eine Möglichkeit, dass ich wusste, dass der Prozess nicht funktioniert oder ffmpeg ist Codierung oder ein verwandtes Problem. Es macht also keinen Sinn, nette oder cgroups zu verwenden. – user2201239