feat: add mjpg-streamer installer

This commit is contained in:
th33xitus
2021-03-22 19:09:56 +01:00
parent 48d97dab01
commit 104089ea3d
5 changed files with 185 additions and 25 deletions

104
scripts/install_mjpg-streamer.sh Executable file
View File

@@ -0,0 +1,104 @@
### base variables
SYSTEMDDIR="/etc/systemd/system"
WEBCAMD_SRC="https://raw.githubusercontent.com/raymondh2/MainsailOS/master/src/modules/mjpgstreamer/filesystem/home/root/bin/webcamd"
WEBCAM_TXT_SRC="https://raw.githubusercontent.com/raymondh2/MainsailOS/master/src/modules/mjpgstreamer/filesystem/boot/mainsail.txt"
install_mjpg-streamer(){
### if there is a webcamd.service -> exit
if [ -e $SYSTEMDDIR/webcamd.service ]; then
ERROR_MSG="Looks like MJPG-streamer is already installed!\n Please remove it first before you try to re-install it!"
print_msg && clear_msg && return 0
fi
### checking dependencies
check_klipper_cfg_path
### set path for the webcam config textfile
WEBCAM_TXT="$klipper_cfg_loc/webcam.txt"
### check and install dependencies if missing
dep=(build-essential git imagemagick libv4l-dev libjpeg-dev libjpeg62-turbo-dev cmake)
dependency_check
### step 1: clone moonraker
status_msg "Downloading MJPG-Streamer ..."
cd ${HOME} && git clone https://github.com/jacksonliam/mjpg-streamer.git
ok_msg "Download complete!"
### step 2: compiling mjpg-streamer
status_msg "Compiling MJPG-Streamer ..."
cd ${HOME}/mjpg-streamer/mjpg-streamer-experimental && make
ok_msg "Compiling complete!"
#step 3: install mjpg-streamer
status_msg "Installing MJPG-Streamer ..."
cd ${HOME}/mjpg-streamer && mv mjpg-streamer-experimental/* .
mkdir www-mjpgstreamer
cat <<EOT >> ./www-mjpgstreamer/index.html
<html>
<head><title>mjpg_streamer test page</title></head>
<body>
<h1>Snapshot</h1>
<p>Refresh the page to refresh the snapshot</p>
<img src="./?action=snapshot" alt="Snapshot">
<h1>Stream</h1>
<img src="./?action=stream" alt="Stream">
</body>
</html>
EOT
sudo wget $WEBCAMD_SRC -O "/usr/local/bin/webcamd"
sudo sed -i "/MJPGSTREAMER_HOME/ s/pi/${USER}/" /usr/local/bin/webcamd
sudo sed -i "/^cfg_files+=/ s|=.*|=$WEBCAM_TXT|" /usr/local/bin/webcamd
sudo chmod +x /usr/local/bin/webcamd
### step 4: create webcam.txt config file
if [ ! -f $WEBCAM_TXT ]; then
### create the config dir if it doesn't exist
if [ ! -d $klipper_cfg_loc ]; then
status_msg "Creating $klipper_cfg_loc ..."
mkdir -p $klipper_cfg_loc
fi
status_msg "Creating webcam.txt config file ..."
wget $WEBCAM_TXT_SRC -O $WEBCAM_TXT
ok_msg "Done!"
fi
### step 5: create systemd service
status_msg "Creating MJPG-Streamer service ..."
sudo /bin/sh -c "cat > ${SYSTEMDDIR}/webcamd.service" << EOF
[Unit]
Description=Starts mjpg-streamer on startup
After=network.target
[Install]
WantedBy=multi-user.target
[Service]
Type=forking
User=${USER}
WorkingDirectory=/usr/local/bin
StandardOutput=append:/var/log/webcamd.log
StandardError=append:/var/log/webcamd.log
ExecStart=/usr/local/bin/webcamd
Restart=always
RestartSec=10
EOF
### step 6: enabling and starting mjpg-streamer service
status_msg "Starting MJPG-Streamer service ..."
sudo systemctl enable webcamd.service
sudo systemctl start webcamd.service
ok_msg "MJPG-Streamer service started!"
### confirm message
CONFIRM_MSG="MJPG-Streamer has been set up!"
print_msg && clear_msg
### print webcam ip adress/url
IP=$(hostname -I | cut -d" " -f1)
WEBCAM_IP="http://$IP:8080/?action=stream"
WEBCAM_URL="http://$IP/webcam/?action=stream"
echo -e " ${cyan}● Webcam URL:${default} $WEBCAM_IP"
echo -e " ${cyan}● Webcam URL:${default} $WEBCAM_URL"
echo
}