Skip to content

Instantly share code, notes, and snippets.

@iameli
Created September 30, 2019 00:26
Show Gist options
  • Select an option

  • Save iameli/3a1f8266b1ea6c6224a6bcceb8d4479d to your computer and use it in GitHub Desktop.

Select an option

Save iameli/3a1f8266b1ea6c6224a6bcceb8d4479d to your computer and use it in GitHub Desktop.
a version of Livepeer's install_ffmpeg.sh that builds with SRT support
#!/usr/bin/env bash
set -ex
# Windows (MSYS2) needs a few tweaks
if [[ $(uname) == *"MSYS2_NT"* ]]; then
export PATH="$PATH:/usr/bin:/mingw64/bin"
export C_INCLUDE_PATH="${C_INCLUDE_PATH:-}:/msys64/mingw64/lib"
export HOME="/build"
mkdir -p $HOME
export PATH="$HOME/compiled/bin":$PATH
export PKG_CONFIG_PATH=/mingw64/lib/pkgconfig
export TARGET_OS="--target-os=mingw64"
export HOST_OS="--host=x86_64-w64-mingw32"
# Needed for mbedtls
export WINDOWS_BUILD=1
fi
export PATH="$HOME/compiled/bin":$PATH
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH:-}:$HOME/compiled/lib/pkgconfig"
# NVENC only works on Windows/Linux
if [ $(uname) != "Darwin" ]; then
if [ ! -e "$HOME/nv-codec-headers" ]; then
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git "$HOME/nv-codec-headers"
cd $HOME/nv-codec-headers
make -e PREFIX="$HOME/compiled"
make install -e PREFIX="$HOME/compiled"
fi
fi
if [ ! -e "$HOME/nasm/nasm" ]; then
# sudo apt-get -y install asciidoc xmlto # this fails :(
git clone -b nasm-2.14.02 https://repo.or.cz/nasm.git "$HOME/nasm"
cd "$HOME/nasm"
./autogen.sh
./configure --prefix="$HOME/compiled"
make
make install || echo "Installing docs fails but should be OK otherwise"
fi
if [ ! -e "$HOME/x264" ]; then
git clone http://git.videolan.org/git/x264.git "$HOME/x264"
cd "$HOME/x264"
# git master as of this writing
git checkout 545de2ffec6ae9a80738de1b2c8cf820249a2530
./configure --prefix="$HOME/compiled" --enable-pic --enable-static ${HOST_OS:-} --disable-cli
make
make install-lib-static
fi
EXTRA_FFMPEG_FLAGS=""
# Only Linux supports CUDA... for now.
if [ $(uname) == "Linux" ]; then
if [ -e /usr/local/cuda/include ]; then
echo "CUDA detected, building with GPU support"
EXTRA_FFMPEG_FLAGS="--enable-cuda --enable-cuvid --enable-nvenc --enable-filter=scale_cuda --enable-encoder=h264_nvenc --enable-cuda-nvcc"
fi
fi
if [ ! -e "$HOME/srt" ]; then
git clone --depth=1 https://github.com/Haivision/srt.git "$HOME/srt"
cd "$HOME/srt"
# git master as of this writing
./configure --prefix="$HOME/compiled"
make
make install
fi
# if [ ! -e "$HOME/ffmpeg/libavcodec/libavcodec.a" ]; then
# git clone --depth=1 https://git.ffmpeg.org/ffmpeg.git "$HOME/ffmpeg" || echo "FFmpeg dir already exists"
cd "$HOME/ffmpeg"
# git checkout 4cfc34d9a8bffe4a1dd53187a3e0f25f34023a09
./configure ${TARGET_OS:-} --disable-doc --disable-sdl2 --disable-iconv \
--disable-muxers --disable-demuxers --disable-parsers --disable-protocols \
--disable-encoders --disable-decoders --disable-filters --disable-bsfs \
--disable-postproc --disable-lzma \
--enable-gnutls --enable-libx264 --enable-gpl --enable-nonfree \
--enable-libsrt \
--enable-protocol=https,rtmp,file,libsrt \
--enable-muxer=mpegts,hls,segment --enable-demuxer=flv,mpegts \
--enable-bsf=h264_mp4toannexb,aac_adtstoasc,h264_metadata,h264_redundant_pps \
--enable-parser=aac,aac_latm,h264 \
--enable-filter=abuffer,buffer,abuffersink,buffersink,afifo,fifo,aformat \
--enable-filter=aresample,asetnsamples,fps,scale \
--enable-encoder=aac,libx264 \
--enable-demuxer=mov \
--enable-decoder=aac,h264 \
--extra-cflags="-I${HOME}/compiled/include" \
--extra-ldflags="-L${HOME}/compiled/lib" \
--prefix="$HOME/compiled" \
$EXTRA_FFMPEG_FLAGS
make
make install
# fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment