Project

General

Profile

Download (4.69 KB) Statistics
| Branch: | Tag: | Revision:
#!/bin/bash
#
# 20181218 -- Build static version of ffmpeg, basically a script that automates
# these instructions: https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
#


SOURCES_DIR="/home/dsorber/Downloads/ffmpeg/sources"
BUILD_DIR="/home/dsorber/Downloads/ffmpeg/build"
BIN_DIR="/home/dsorber/Downloads/ffmpeg/bin"
FFMPEG_VERSION="4.1" # <--- set this to latest version

NUM_CORES=$(cat /proc/cpuinfo | awk '/^processor/{print $3}' | wc -l)

# CLEAN: rm -rf bin/ build sources/

echo "Installing prereqs..."
sudo apt -y install \
autoconf \
automake \
build-essential \
cmake \
git-core \
libass-dev \
libfreetype6-dev \
libnuma-dev \
libsdl2-dev \
libtool \
libva-dev \
libvdpau-dev \
libvorbis-dev \
libxcb1-dev \
libxcb-shm0-dev \
libxcb-xfixes0-dev \
mercurial \
pkg-config \
texinfo \
wget \
zlib1g-dev
mkdir -p $SOURCES_DIR $BUILD_DIR $BIN_DIR
echo
echo

echo "Building NASM"
cd $SOURCES_DIR && \
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14/nasm-2.14.tar.bz2 && \
tar xjvf nasm-2.14.tar.bz2 && \
cd nasm-2.14 && \
./autogen.sh && \
PATH="$BIN_DIR:$PATH" ./configure --prefix="$BUILD_DIR" --bindir="$BIN_DIR" && \
make -j$NUM_CORES && \
make install
echo
echo

echo "Building Yasm"
cd $SOURCES_DIR && \
wget -O yasm-1.3.0.tar.gz https://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 && \
./configure --prefix="$BUILD_DIR" --bindir="$BIN_DIR" && \
make -j$NUM_CORES && \
make install
echo
echo

echo "Building libx264"
cd $SOURCES_DIR && \
git -C x264 pull 2> /dev/null || git clone --depth 1 https://git.videolan.org/git/x264 && \
cd x264 && \
PATH="$BIN_DIR:$PATH" PKG_CONFIG_PATH="$BUILD_DIR/lib/pkgconfig" ./configure --prefix="$BUILD_DIR" \
--bindir="$BIN_DIR" --enable-static --enable-pic && \
PATH="$BIN_DIR:$PATH" make -j$NUM_CORES && \
make install
echo
echo

echo "Buildxing libx265"
cd $SOURCES_DIR && \
if cd x265 2> /dev/null; then hg pull && hg update; else hg clone https://bitbucket.org/multicoreware/x265; fi && \
cd x265/build/linux && \
PATH="$BIN_DIR:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$BUILD_DIR" -DENABLE_SHARED=off ../../source && \
PATH="$BIN_DIR:$PATH" make -j$NUM_CORES && \
make install
echo
echo

echo "Building libvpx"
cd $SOURCES_DIR && \
git -C libvpx pull 2> /dev/null || git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git && \
cd libvpx && \
PATH="$BIN_DIR:$PATH" ./configure --prefix="$BUILD_DIR" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm && \
PATH="$BIN_DIR:$PATH" make -j$NUM_CORES && \
make install
echo
echo

echo "Building libfdk-aac"
cd $SOURCES_DIR && \
git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac && \
cd fdk-aac && \
autoreconf -fiv && \
./configure --prefix="$BUILD_DIR" --disable-shared && \
make -j$NUM_CORES && \
make install
echo
echo

echo "Building libmp3lame"
cd $SOURCES_DIR && \
wget -O lame-3.100.tar.gz https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz && \
tar xzvf lame-3.100.tar.gz && \
cd lame-3.100 && \
PATH="$BIN_DIR:$PATH" ./configure --prefix="$BUILD_DIR" --bindir="$BIN_DIR" --disable-shared --enable-nasm && \
PATH="$BIN_DIR:$PATH" make -j$NUM_CORES && \
make install
echo
echo

echo "Building libopus"
cd $SOURCES_DIR && \
git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git && \
cd opus && \
./autogen.sh && \
./configure --prefix="$BUILD_DIR" --disable-shared && \
make -j$NUM_CORES && \
make install
echo
echo

echo "Building libaom"
cd $SOURCES_DIR && \
git -C aom pull 2> /dev/null || git clone --depth 1 https://aomedia.googlesource.com/aom && \
mkdir aom_build && \
cd aom_build && \
PATH="$BIN_DIR:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$BUILD_DIR" -DENABLE_SHARED=off -DENABLE_NASM=on ../aom && \
PATH="$BIN_DIR:$PATH" make -j$NUM_CORES && \
make install
echo
echo

echo "Building ffmpeg"
cd $SOURCES_DIR && \
wget -O ffmpeg-$FFMPEG_VERSION.tar.bz2 https://ffmpeg.org/releases/ffmpeg-$FFMPEG_VERSION.tar.bz2 && \
tar xjvf ffmpeg-$FFMPEG_VERSION.tar.bz2 && \
cd ffmpeg-$FFMPEG_VERSION && \
PATH="$BIN_DIR:$PATH" PKG_CONFIG_PATH="$BUILD_DIR/lib/pkgconfig" ./configure \
--prefix="$BUILD_DIR" \
--pkg-config-flags="--static" \
--extra-cflags="-I$BUILD_DIR/include" \
--extra-ldflags="-L$BUILD_DIR/lib" \
--extra-libs="-lpthread -lm" \
--bindir="$BIN_DIR" \
--enable-gpl \
--enable-libaom \
--enable-libass \
--enable-libfdk-aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-nonfree && \
PATH="$BIN_DIR:$PATH" make -j$NUM_CORES && \
make install && \
hash -r
(1-1/17)