Created
September 30, 2019 00:26
-
-
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
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
| #!/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