123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- #!/bin/bash
- #ubuntu: 14.04+
- #
- #install required things from apt
- installLibs() {
- echo "Installing prerequisites"
- sudo apt-get update
- sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev \
- libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \
- libxcb-xfixes0-dev pkg-config texi2html zlib1g-dev
- }
- #Compile nasm
- compileNasm() {
- echo "Compiling nasm"
- cd ~/ffmpeg_sources
- wget http://www.nasm.us/pub/nasm/releasebuilds/2.14rc0/nasm-2.14rc0.tar.gz
- tar xzvf nasm-2.14rc0.tar.gz
- cd nasm-2.14rc0
- ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
- make -j$(nproc)
- make -j$(nproc) install
- make -j$(nproc) distclean
- }
- #Compile libx264
- compileLibX264() {
- echo "Compiling libx264"
- cd ~/ffmpeg_sources
- wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
- tar xjvf last_x264.tar.bz2
- cd x264-snapshot*
- PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
- PATH="$HOME/bin:$PATH" make -j$(nproc)
- make -j$(nproc) install
- make -j$(nproc) distclean
- }
- #Compile libfdk-acc
- compileLibfdkcc() {
- echo "Compiling libfdk-cc"
- sudo apt-get install unzip
- cd ~/ffmpeg_sources
- wget -O fdk-aac.zip https://github.com/mstorsjo/fdk-aac/zipball/master
- unzip fdk-aac.zip
- cd mstorsjo-fdk-aac*
- autoreconf -fiv
- ./configure --prefix="$HOME/ffmpeg_build" --disable-shared
- make -j$(nproc)
- make -j$(nproc) install
- make -j$(nproc) distclean
- }
- #Compile libmp3lame
- compileLibMP3Lame() {
- echo "Compiling libmp3lame"
- sudo apt-get install nasm
- cd ~/ffmpeg_sources
- wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
- tar xzvf lame-3.99.5.tar.gz
- cd lame-3.99.5
- ./configure --prefix="$HOME/ffmpeg_build" --enable-nasm --disable-shared
- make -j$(nproc)
- make -j$(nproc) install
- make -j$(nproc) distclean
- }
- #Compile libopus
- compileLibOpus() {
- echo "Compiling libopus"
- cd ~/ffmpeg_sources
- wget http://downloads.xiph.org/releases/opus/opus-1.2.1.tar.gz
- tar xzvf opus-1.2.1.tar.gz
- cd opus-1.2.1
- ./configure --prefix="$HOME/ffmpeg_build" --disable-shared
- make -j$(nproc)
- make -j$(nproc) install
- make -j$(nproc) distclean
- }
- #Compile libvpx
- compileLibPvx() {
- echo "Compiling libvpx"
- cd ~/ffmpeg_sources
- git clone https://chromium.googlesource.com/webm/libvpx
- cd libvpx
- PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --enable-runtime-cpu-detect --enable-vp9 --enable-vp8 \
- --enable-postproc --enable-vp9-postproc --enable-multi-res-encoding --enable-webm-io --enable-better-hw-compatibility --enable-vp9-highbitdepth --enable-onthefly-bitpacking --enable-realtime-only \
- --cpu=native --as=nasm
- PATH="$HOME/bin:$PATH" make -j$(nproc)
- make -j$(nproc) install
- make -j$(nproc) clean
- }
- #Compile ffmpeg
- compileFfmpeg() {
- echo "Compiling ffmpeg"
- cd ~/ffmpeg_sources
- git clone https://github.com/FFmpeg/FFmpeg -b master
- cd FFmpeg
- PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
- --prefix="$HOME/ffmpeg_build" \
- --extra-cflags="-I$HOME/ffmpeg_build/include" \
- --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
- --bindir="$HOME/bin" \
- --enable-cuvid \
- --enable-libnpp \
- --enable-gpl \
- --enable-libass \
- --enable-libfdk-aac \
- --enable-vaapi \
- --enable-libfreetype \
- --enable-libmp3lame \
- --enable-libopus \
- --enable-libtheora \
- --enable-libvorbis \
- --enable-libvpx \
- --enable-libx264 \
- --enable-libx265 \
- --enable-nonfree \
- --enable-lv2 \
- --samples=fate-suite/
- PATH="$HOME/bin:$PATH" make -j$(nproc)
- make -j$(nproc) install
- make -j$(nproc) distclean
- hash -r
- }
- #The process
- cd ~
- mkdir ffmpeg_sources
- installLibs
- compileNasm
- compileLibX264
- compileLibfdkcc
- compileLibMP3Lame
- compileLibOpus
- compileLibPvx
- compileFfmpeg
- echo "Complete!"
|