171 lines
3.9 KiB
Bash
Executable File
171 lines
3.9 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 v.2
|
|
# Date: 22-03-2019
|
|
# --------------------------------------
|
|
VERSION=1.2.1
|
|
|
|
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/
|
|
|
|
# Check if 'user' is 'root'
|
|
user=$(whoami)
|
|
if [ "$user" == "root" ] ; then
|
|
echo "OK" > /dev/null
|
|
else
|
|
echo "You must be root!"
|
|
exit 0
|
|
fi
|
|
|
|
# Detect "kernel" name
|
|
KERNEL=$(uname -s)
|
|
|
|
if [ $KERNEL == "Linux" ]; then
|
|
KERNEL=linux
|
|
else
|
|
echo "Unsupported OS ($KERNEL)"
|
|
exit 0
|
|
fi
|
|
|
|
# Detect "arch" system
|
|
archs=`uname -m`
|
|
case "$archs" in
|
|
i?86)
|
|
ARCH=i686
|
|
;;
|
|
x86_64)
|
|
ARCH=amd64
|
|
;;
|
|
*)
|
|
echo "Unsupported Arquitecture ($archs)"
|
|
exit 0
|
|
esac
|
|
|
|
#Check if 'curl' is installed.
|
|
curl --help > /dev/null
|
|
if [ "$?" -eq 0 ] ; then
|
|
echo "OK" > /dev/null
|
|
else
|
|
echo "You must install 'curl'."
|
|
fi
|
|
|
|
# Check available downloaders (wget, axel or aria2c).
|
|
wget --help > /dev/null
|
|
if [ "$?" -eq 0 ] ; then
|
|
APP_DOWNLOAD='wget -c'
|
|
NAME_APP_DOWNLOAD="wget"
|
|
else
|
|
echo "wget disabled"
|
|
fi
|
|
|
|
axel --help > /dev/null
|
|
if [ "$?" -eq 0 ] ; then
|
|
APP_DOWNLOAD='axel'
|
|
NAME_APP_DOWNLOAD="axel"
|
|
else
|
|
echo "axel disabled"
|
|
fi
|
|
|
|
aria2c --help > /dev/null
|
|
if [ "$?" -eq 0 ] ; then
|
|
APP_DOWNLOAD='aria2c --check-certificate=false'
|
|
NAME_APP_DOWNLOAD="aria2c"
|
|
else
|
|
echo "aria2c disabled"
|
|
fi
|
|
|
|
if [ "x$APP_DOWNLOAD" = "x" ] ; then
|
|
echo "Error: You must install 'wget' or 'axel' or 'aria2'."
|
|
fi
|
|
|
|
#Install, update & uninstall FFmpeg
|
|
case $1 in
|
|
|
|
--install|-install|--update|-update)
|
|
cd $TMP_DIR
|
|
rm -rf ffmpeg-*
|
|
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 "Connection problem!"
|
|
echo "Exiting..."
|
|
exit
|
|
fi
|
|
tar Jxvf $NAME_PACKAGE
|
|
rm -f ffmpeg-url ffmpeg*xz
|
|
cd ffmpeg-*
|
|
cp -rf ffmpeg $PATH_INSTALL
|
|
cp -rf ffprobe $PATH_INSTALL
|
|
cd ..
|
|
rm -rf ffmpeg-*
|
|
echo "Done!"
|
|
exit 0
|
|
;;
|
|
--uninstall|-uninstall)
|
|
echo "Uninstalling..."
|
|
sleep 3
|
|
rm -rf /usr/bin/ffmpeg
|
|
rm -rf /usr/bin/ffprobe
|
|
rm -rf /usr/bin/ffserver
|
|
rm -rf /usr/bin/ffmpeg-10bit
|
|
echo "Done!"
|
|
;;
|
|
--help|-help|-h|*)
|
|
clear
|
|
echo ""
|
|
echo "** ffmpeg-install v.$VERSION **"
|
|
echo ""
|
|
echo "* How to install:"
|
|
echo ""
|
|
echo " ffmpeg-install --install (Latest git version)"
|
|
echo " ffmpeg-install --install release (Latest stable version)"
|
|
echo ""
|
|
echo "* How to update:"
|
|
echo ""
|
|
echo " ffmpeg-install --update (Latest git version)"
|
|
echo " ffmpeg-install --update release (Latest stable version)"
|
|
echo ""
|
|
echo "* How to uninstall:"
|
|
echo ""
|
|
echo " ffmpeg-install --uninstall"
|
|
echo ""
|
|
echo "* Show help:"
|
|
echo ""
|
|
echo " ffmpeg --help"
|
|
echo ""
|
|
exit 0
|
|
esac
|
|
|
|
|