ffmpeg-builds/ffmpeg-installer.sh

207 lines
5.3 KiB
Bash
Executable File

#!/bin/bash
########################################################
# Script to install FFmpeg on GNU/Linux #
# Website: https://www.johnvansickle.com/ffmpeg/ #
# Created by q3aql (q3aql@protonmail.ch) #
# Builds by John Van Sickle (john.vansickle@gmail.com) #
# Licensed by GPL v2.0 #
# Date: 27-03-2021 #
########################################################
VERSION="v2.0"
M_DATE="270321"
# Variables
URL="https://www.johnvansickle.com/ffmpeg/"
URL_RELEASES="https://johnvansickle.com/ffmpeg/releases/"
URL_BUILDS="https://johnvansickle.com/ffmpeg/builds/"
TMP_DIR=/tmp
PATH_INSTALL=/usr/bin/
# Downloader
APP_DOWNLOAD="x"
NAME_APP_DOWNLOAD="x"
# Function to check root permission
function rootMessage() {
mkdir -p /etc/root &> /dev/null
administrator=$?
if [ ${administrator} -eq 0 ] ; then
rm -rf /etc/root
else
echo ""
echo "* ffmpeg-install ${VERSION} (${M_DATE}) (GPL v2.0)"
echo ""
echo "+ Root permissions are required!"
echo ""
exit
fi
}
# Function to detect "kernel" name
function kernelCheck() {
KERNEL=$(uname -s)
if [ $KERNEL == "Linux" ]; then
KERNEL=linux
else
echo ""
echo "* ffmpeg-install ${VERSION} (${M_DATE}) (GPL v2.0)"
echo ""
echo "+ Unsupported OS ($KERNEL)"
echo ""
exit
fi
}
# Function to detect "arch" system.
function archCheck() {
archs=$(uname -m)
case "${archs}" in
i?86)
ARCH=i686
;;
x86_64)
ARCH=amd64
;;
*)
echo ""
echo "* ffmpeg-install ${VERSION} (${M_DATE}) (GPL v2.0)"
echo ""
echo "+ Unsupported Arquitecture (${archs})"
echo ""
exit
esac
}
# Function to check if 'curl' is installed.
function curlCheck () {
curl --help &> /dev/null
if [ "$?" -eq 0 ] ; then
echo "OK" > /dev/null
else
echo ""
echo "* ffmpeg-install ${VERSION} (${M_DATE}) (GPL v2.0)"
echo ""
echo "+ Error: You must install 'curl'."
echo ""
exit
fi
}
# Function to check available downloaders (wget, axel or aria2c).
function checkDownloader() {
# Check wget installed
wget --help &> /dev/null
checkWget="$?"
# Check axel installed
axel --help &> /dev/null
checkAxel="$?"
# Check aria2c installed
aria2c --help &> /dev/null
checkAria2="$?"
# Check variables
if [ ${checkAria2} -eq 0 ] ; then
APP_DOWNLOAD='aria2c --check-certificate=false'
NAME_APP_DOWNLOAD="aria2c"
elif [ ${checkAxel} -eq 0 ] ; then
APP_DOWNLOAD='axel'
NAME_APP_DOWNLOAD="axel"
elif [ ${checkWget} -eq 0 ] ; then
APP_DOWNLOAD='wget -c'
NAME_APP_DOWNLOAD="wget"
elif [ "x${APP_DOWNLOAD}" = "x" ] ; then
echo ""
echo "* ffmpeg-install ${VERSION} (${M_DATE}) (GPL v2.0)"
echo ""
echo "+ Error: You must install 'wget' or 'axel' or 'aria2'."
echo ""
exit
fi
}
# Check all configs
rootMessage
kernelCheck
archCheck
curlCheck
checkDownloader
# Sintax to install, update and uninstall FFmpeg.
case ${1} in
--install|-install|--update|-update)
cd ${TMP_DIR}
rm -rf ffmpeg-*
echo ""
echo "* ffmpeg-install ${VERSION} (${M_DATE}) (GPL v2.0)"
echo ""
if [ "${2}" == "release" ] ; then
curl ${URL} | grep "${URL_RELEASES}" | cut -d '"' -f 2 | grep "${ARCH}" | head -1 > $TMP_DIR/ffmpeg-url
if [ "$?" -eq 0 ] ; then
echo "OK" > /dev/null
else
echo "+ Connection problem!"
echo "* Exiting..."
exit
fi
else
curl ${URL} | grep "${URL_BUILDS}" | cut -d '"' -f 2 | grep "${ARCH}" | head -1 > $TMP_DIR/ffmpeg-url
if [ "$?" -eq 0 ] ; then
echo "OK" > /dev/null
else
echo "+ Connection problem!"
echo "* Exiting..."
exit
fi
fi
URL_PACKAGE=`cat $TMP_DIR/ffmpeg-url`
NAME_PACKAGE=`cat /tmp/ffmpeg-url | cut -d "/" -f 6`
#clear
echo "* Downloading ${NAME_PACKAGE} (${NAME_APP_DOWNLOAD})"
${APP_DOWNLOAD} ${URL_PACKAGE}
if [ "$?" -eq 0 ] ; then
echo "OK" > /dev/null
else
echo ""
echo "+ Connection problem!"
echo "* Exiting..."
exit
fi
tar Jxvf ${NAME_PACKAGE}
rm -f ffmpeg-url ffmpeg*xz
cd ffmpeg-*
cp -rfv ffmpeg ${PATH_INSTALL}
cp -rfv ffprobe ${PATH_INSTALL}
cd ..
rm -rf ffmpeg-*
echo "* Finished!"
exit
;;
--uninstall|-uninstall)
echo ""
echo "* ffmpeg-install ${VERSION} (${M_DATE}) (GPL v2.0)"
echo ""
echo "* Uninstalling FFmpeg..."
sleep 3
rm -rfv /usr/bin/ffmpeg
rm -rfv /usr/bin/ffprobe
echo "* Finished!"
;;
--help|-help|-h|*)
echo ""
echo "* ffmpeg-install ${VERSION} (${M_DATE}) (GPL v2.0)"
echo ""
echo "* Script: q3aql (q3aql@protonmail.ch)"
echo "* Builds: John Van Sickle (john.vansickle@gmail.com)"
echo ""
echo "+ Syntax:"
echo ""
echo " $ ffmpeg-install --install --> Install FFmpeg (Git version)"
echo " $ ffmpeg-install --install release --> Install FFmpeg (Stable version)"
echo " $ ffmpeg-install --update --> Update FFmpeg (Git version)"
echo " $ ffmpeg-install --update release --> Update FFmpeg (Stable version)"
echo " $ ffmpeg-install --uninstall --> Uninstall FFmpeg previously installed"
echo " $ ffmpeg-install --help --> Show help"
echo ""
exit
esac