auto-restart FFMPEG when it stops sending frames to youtube
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
sleep 5 | |
ffmpeg -re -f mjpeg -r 10 -i "http://localhost/?action=stream" -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -acodec aac -ab 1k -strict experimental -s 640x360 -vcodec h264 -pix_fmt yuv420p -g 20 -vb 500k -preset ultrafast -crf 31 -r 10 -f flv "rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx" 2> /home/pi/ffmpeg.log |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
sleep 10 | |
while true | |
do | |
frameA=$(tail /home/pi/ffmpeg.log -n 1 | sed -nr 's/.*frame=(.*)fps.*/\1/p') | |
echo "$frameA" | |
sleep 5 | |
frameB=$(tail /home/pi/ffmpeg.log -n 1 | sed -nr 's/.*frame=(.*)fps.*/\1/p') | |
echo "$frameB" | |
if [ "$frameA" = "$frameB" ] | |
then | |
echo "Stream has hung" | |
printf "%s - Stream has hung\n" "$(date)" >> stream.log | |
pkill ffmpeg | |
echo "killed ffmpeg..." | |
printf "%s - Killed ffmpeg...\n" "$(date)" >> stream.log | |
echo "Waiting 5 secs" | |
sleep 5 | |
bash /home/pi/ffmpeg.sh & | |
echo "started ffpmeg.." | |
printf "%s - Started ffmpeg..\n" "$(date)" >> stream.log | |
echo "Waiting 15 secs" | |
sleep 15 | |
else | |
echo "Stream looks ok." | |
fi | |
sleep 2 | |
done |
This just got me where I needed to go on a solution. Thanks.
Really awesome! Got mine working with my custom rtmp server. Thanks a lot!
When I do this it also kills other streams. I want to do it for only 1 broadcast.
I am completely new to Pi's, scripting and such. Is this a command to execute or do i paste this (with changed URL) it in a config file?
I am completely new to Pi's, scripting and such. Is this a command to execute or do i paste this (with changed URL) it in a config file?
These are shell scripts. It's a simple language to automate terminal commands.
Take a look at https://www.circuitbasics.com/how-to-write-and-run-a-shell-script-on-the-raspberry-pi/
Have fun!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Auto restart script based from https://stackoverflow.com/questions/49471595/improve-bash-script-for-checking-when-ffmpeg-hangs-streaming-ip-cam-rtsp-to-yout