I've written a script that first checks whether a local network stream is up, then if this is the case it will start vlc. It will then keep monitoring the stream, if it goes down it will close vlc and wait for the stream to return before restarting vlc (see below).
If I run the script manually this works.
I'd like this script to run automatically on startup (using Raspbian). The issue I seem to be having is that regardless of how I get the script to run on startup I see that it's briefly connecting to the network stream but it isn't opening vlc (at least not visibly on the desktop).
Any suggestions gratefully appreciated.
#!/bin/bash
export DISPLAY=:0
# Remove previous test stream grab
rm /home/pi/snapshot.png
myip="192.168.0.67"
STATUS=0
while [ $STATUS == 0 ]; do
# Test stream by taking image grab
ffmpeg -i rtsp://$myip:8080/h264_ulaw.sdp -frames 1 /home/pi/snapshot.png
# Check to see if image grab has worked
file="/home/pi/snapshot.png"
if [ -f "$file" ]
then
echo "$file found."
# Start stream if up
vlc rtsp://$myip:8080/h264_ulaw.sdp --fullscreen &
STATUS_INNER=0
while [ $STATUS_INNER == 0 ]; do
rm /home/pi/snapshot.png
ffmpeg -i rtsp://$myip:8080/h264_ulaw.sdp -frames 1 /home/pi/snapshot.png
if [ -f "$file" ]
then
# Do nothing
echo "Keep playing."
sleep 10
else
echo "Stream stopped, trying to restart."
pkill vlc
STATUS_INNER=1
fi
done
# STATUS=1
else
echo "$file not found."
sleep 5
fi
done
Currently trying to run using /etc/rc.local as below
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exec 1>/tmp/rc.local.log 2>&1 # send stdout and stderr from rc.local to a log file
set -x # tell sh to display commands before execution
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
/home/pi/./vlc_autorun.sh
exit 0
export DISPLAY=:0
to the start of the script. Try launching the script from /etc/rc.local with the commandsudo -u pi bash myscript.sh
./home/pi/./vlc_autorun.sh
tosudo -u pi bash /home/pi/./vlc_autorun.sh
.