Created
November 24, 2017 08:40
-
-
Save janyo1201/efd64b8ec82c04b8a59b143f3c23eb30 to your computer and use it in GitHub Desktop.
FFmpeg installer
This file contains hidden or 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
| ################################################## | |
| # | |
| # FFmpeg installer | |
| # | |
| # written | |
| # by K. (https://github.com/wlzla000) | |
| # on October 17-18, 2017. | |
| # | |
| # for Ubuntu 17.04 (zesty) | |
| # | |
| # | |
| # | |
| # This shell script installs these: | |
| # | |
| # autoconf | |
| # automake | |
| # build-essential | |
| # libass-dev | |
| # libfreetype6-dev | |
| # libsdl2-dev | |
| # libtheora-dev | |
| # libtool | |
| # libva-dev | |
| # libvdpau-dev | |
| # libvorbis-dev | |
| # libxcb1-dev | |
| # libxcb-shm0-dev | |
| # libxcb-xfixes0-dev | |
| # pkg-config | |
| # texinfo | |
| # wget | |
| # zlib1g-dev | |
| # yasm 1.3.0 | |
| # nasm 2.13.01 | |
| # libx264 latest version | |
| # cmake | |
| # mercurial | |
| # libx265 latest version | |
| # libfdk-aac latest version | |
| # libmp3lame 3.100 | |
| # libopus 1.2.1 | |
| # git | |
| # libvpx latest version | |
| # FFmpeg latest version (nightly build) | |
| # | |
| ## Make sure dpkg is available | |
| sudo rm /var/lib/apt/lists/lock /var/cache/apt/archives/lock /var/lib/dpkg/lock | |
| sudo dpkg --configure -a | |
| ## Installing the dependencies | |
| sudo apt-get update | |
| sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev \ | |
| libsdl2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \ | |
| libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev | |
| ## Make a directory for the source files | |
| mkdir -p ~/ffmpeg_sources | |
| ## Installing yasm 1.3.0 | |
| # Remove currently installed yasm if any | |
| sudo apt-get purge -y yasm | |
| sudo apt autoremove -y | |
| # Download yasm 1.3.0 source code | |
| cd ~/ffmpeg_sources | |
| wget -N http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz | |
| tar xzvf yasm-1.3.0.tar.gz | |
| cd yasm-1.3.0 | |
| # Build yasm 1.3.0 | |
| ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" | |
| make | |
| # Install yasm 1.3.0 | |
| make install | |
| sudo ln -sf `pwd`/yasm /usr/bin/yasm | |
| ## Installing nasm 2.13.01 | |
| # Remove currently installed nasm if any | |
| sudo apt-get purge -y nasm | |
| sudo apt autoremove -y | |
| # Download nasm 2.13.01 source code | |
| cd ~/ffmpeg_sources | |
| wget -N http://www.nasm.us/pub/nasm/releasebuilds/2.13.01/nasm-2.13.01.tar.bz2 | |
| tar xjvf nasm-2.13.01.tar.bz2 | |
| cd nasm-2.13.01 | |
| # Build nasm 2.13.01 | |
| ./autogen.sh | |
| PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" | |
| PATH="$HOME/bin:$PATH" make | |
| # Install nasm 2.13.01 | |
| make install | |
| sudo ln -sf "$HOME/bin/nasm" /usr/bin/nasm | |
| ## Installing libx264 latest version | |
| # Remove currently installed libx264 if any | |
| sudo apt-get purge -y libx264-dev | |
| sudo apt autoremove -y | |
| # Download libx264 latest version source code | |
| cd ~/ffmpeg_sources | |
| wget -N http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 | |
| tar xjvf last_x264.tar.bz2 | |
| cd x264-snapshot* | |
| # Build libx264 latest version | |
| PATH="$HOME/bin:$PATH" ./configure \ | |
| --prefix="$HOME/ffmpeg_build" \ | |
| --bindir="$HOME/bin" \ | |
| --enable-pic \ | |
| --enable-shared \ | |
| --disable-opencl | |
| # Credit # https://github.com/lutris/ffmpeg-nvenc/issues/5 | |
| PATH="$HOME/bin:$PATH" make | |
| # Install libx264 latest version | |
| make install | |
| sudo ln -sf "$HOME/bin/x264" /usr/bin/x264 | |
| ## Installing libx265 latest version | |
| # Remove currently installed libx265 if any | |
| sudo apt-get purge -y libx265-dev | |
| sudo apt autoremove -y | |
| # Install the dependencies: cmake, mercurial. | |
| sudo apt-get update | |
| sudo apt-get install -y cmake mercurial | |
| # Download libx265 latest version source code | |
| cd ~/ffmpeg_sources | |
| hg clone https://bitbucket.org/multicoreware/x265 | |
| cd ~/ffmpeg_sources/x265/build/linux | |
| # Build libx265 latest version | |
| PATH="$HOME/bin:$PATH" cmake \ | |
| -G "Unix Makefiles" \ | |
| -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" \ | |
| -DENABLE_SHARED:bool=off \ | |
| ../../source | |
| make | |
| # Install libx265 latest version | |
| make install | |
| sudo ln -sf "$HOME/ffmpeg_build/bin/x265" /usr/bin/x265 | |
| ## Installing libfdk-aac latest version | |
| # Remove currently installed libfdk-aac if any | |
| sudo apt-get purge -y libfdk-aac-dev | |
| sudo apt autoremove -y | |
| # Download libfdk-aac latest version source code | |
| cd ~/ffmpeg_sources | |
| wget -N https://github.com/mstorsjo/fdk-aac/tarball/master -O fdk-aac.tar.gz | |
| tar xzvf fdk-aac.tar.gz | |
| cd mstorsjo-fdk-aac* | |
| # Build libfdk-aac latest version | |
| autoreconf -fiv | |
| ./configure --prefix="$HOME/ffmpeg_build" --disable-shared | |
| make | |
| # Install libfdk-aac latest version | |
| make install | |
| ## Installing libmp3lame 3.100 | |
| # Remove currently installed libmp3lame if any | |
| sudo apt-get purge -y libmp3lame-dev | |
| sudo apt autoremove -y | |
| # Download libmp3lame 3.100 source code | |
| cd ~/ffmpeg_sources | |
| wget -N http://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz | |
| tar xzvf lame-3.100.tar.gz | |
| cd lame-3.100 | |
| # Build libmp3lame 3.100 | |
| ./configure --prefix="$HOME/ffmpeg_build" --enable-nasm --disable-shared | |
| make | |
| # Install libmp3lame 3.100 | |
| make install | |
| sudo ln -sf "$HOME/ffmpeg_build/bin/lame" /usr/bin/lame | |
| ## Installing libopus 1.2.1 | |
| # Remove currently installed libopus if any | |
| sudo apt-get purge -y libopus-dev | |
| sudo apt autoremove -y | |
| # Download libopus 1.2.1 source code | |
| cd ~/ffmpeg_sources | |
| wget -N https://archive.mozilla.org/pub/opus/opus-1.2.1.tar.gz | |
| tar xzvf opus-1.2.1.tar.gz | |
| cd opus-1.2.1 | |
| # Build libopus 1.2.1 | |
| ./configure --prefix="$HOME/ffmpeg_build" --disable-shared | |
| make | |
| # Install libopus 1.2.1 | |
| make install | |
| ## Installing libvpx latest version | |
| # Remove currently installed libvpx if any | |
| sudo apt-get purge -y libvpx-dev | |
| sudo apt autoremove -y | |
| # Install the dependency: git. | |
| sudo apt-get update | |
| sudo apt-get install -y git | |
| # Download libvpx latest version source code | |
| cd ~/ffmpeg_sources | |
| git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git | |
| cd libvpx | |
| # Build libvpx latest version | |
| PATH="$HOME/bin:$PATH" ./configure \ | |
| --prefix="$HOME/ffmpeg_build" \ | |
| --disable-examples \ | |
| --disable-unit-tests \ | |
| --enable-vp9-highbitdepth \ | |
| --enable-pic | |
| PATH="$HOME/bin:$PATH" make | |
| # Install libvpx latest version | |
| make install | |
| ## Installing libraries | |
| sudo ln -sf $HOME/ffmpeg_build/lib/lib* /usr/local/lib/ | |
| sudo mkdir -p /usr/local/lib/pkgconfig | |
| sudo ln -sf $HOME/ffmpeg_build/lib/pkgconfig/* /usr/local/lib/pkgconfig/ | |
| ## Installing FFmpeg latest version | |
| # Remove currently installed FFmpeg if any | |
| sudo apt-get purge -y ffmpeg | |
| sudo apt-get purge -y ffmpeg-dev | |
| sudo apt autoremove -y | |
| # Download FFmpeg latest version source code | |
| cd ~/ffmpeg_sources | |
| wget -N http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 | |
| tar xjvf ffmpeg-snapshot.tar.bz2 | |
| cd ffmpeg | |
| # Hotfix for `ERROR: libmp3lame >= 3.98.3 not found` problem. | |
| # CREDIT # https://stackoverflow.com/a/46756012/4510033 | |
| sed -i -e 's/\(3.98.3..lame.lame.h.lame.set.VBR.quality..lmp3lame\)/\1 -lm/' ./configure | |
| # Hotfix for `ERROR: x265 not found using pkg-config` problem. | |
| sed -i -e 's/\(x265.h.x265_api_get\)/\1 -lpthread/' ./configure | |
| # Build FFmpeg latest version | |
| PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \ | |
| --prefix="$HOME/ffmpeg_build" \ | |
| --pkg-config-flags="--static" \ | |
| --extra-cflags="-I$HOME/ffmpeg_build/include" \ | |
| --extra-ldflags="-L$HOME/ffmpeg_build/lib" \ | |
| --bindir="$HOME/bin" \ | |
| --enable-gpl \ | |
| --enable-libass \ | |
| --enable-libfdk-aac \ | |
| --enable-libfreetype \ | |
| --enable-libmp3lame \ | |
| --enable-libopus \ | |
| --enable-libtheora \ | |
| --enable-libvorbis \ | |
| --enable-libvpx \ | |
| --enable-libx264 \ | |
| --enable-libx265 \ | |
| --enable-nonfree | |
| PATH="$HOME/bin:$PATH" make | |
| # Install FFmpeg latest version | |
| make install | |
| hash -r | |
| sudo ldconfig | |
| echo "MANPATH_MAP $HOME/bin $HOME/ffmpeg_build/share/man" >> ~/.manpath | |
| source ~/.profile | |
| sudo ln -s $HOME/bin/ff* /usr/bin/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment