Last active
March 6, 2020 02:13
-
-
Save hoangdh/83e0a81d886289fdf305b72aa15d8810 to your computer and use it in GitHub Desktop.
Compile FFMPEG from source code
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
#!/bin/bash | |
apt-get update -qq && apt-get -y install autoconf automake build-essential cmake git libass-dev libfreetype6-dev libsdl2-dev libtheora-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 ~/ffmpeg_sources ~/bin ~/ffmpeg_build | |
cd ~/ffmpeg_sources && \ | |
wget http://www.nasm.us/pub/nasm/releasebuilds/2.13.02/nasm-2.13.02.tar.bz2 && \ | |
tar xjvf nasm-2.13.02.tar.bz2 && \ | |
cd nasm-2.13.02 && \ | |
./autogen.sh && \ | |
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \ | |
make && \ | |
make install | |
cd ~/ffmpeg_sources && \ | |
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="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \ | |
make && \ | |
make install | |
cd ~/ffmpeg_sources && \ | |
git -C x264 pull 2> /dev/null || git clone --depth 1 https://git.videolan.org/git/x264 && \ | |
cd x264 && \ | |
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static && \ | |
PATH="$HOME/bin:$PATH" make && \ | |
make install | |
cd ~/ffmpeg_sources && \ | |
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="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source && \ | |
PATH="$HOME/bin:$PATH" make && \ | |
make install | |
cd ~/ffmpeg_sources && \ | |
git -C libvpx pull 2> /dev/null || git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git && \ | |
cd libvpx && \ | |
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm && \ | |
PATH="$HOME/bin:$PATH" make && \ | |
make install | |
cd ~/ffmpeg_sources && \ | |
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="$HOME/ffmpeg_build" --disable-shared && \ | |
make && \ | |
make install | |
cd ~/ffmpeg_sources && \ | |
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="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm && \ | |
PATH="$HOME/bin:$PATH" make && \ | |
make install | |
cd ~/ffmpeg_sources && \ | |
git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git && \ | |
cd opus && \ | |
./autogen.sh && \ | |
./configure --prefix="$HOME/ffmpeg_build" --disable-shared && \ | |
make && \ | |
make install | |
cd ~/ffmpeg_sources && \ | |
wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \ | |
tar xjvf ffmpeg-snapshot.tar.bz2 && \ | |
cd ffmpeg && \ | |
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" \ | |
--extra-libs="-lpthread -lm" \ | |
--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 && \ | |
make install && \ | |
echo "PATH=$HOME/bin:$PATH" >> /etc/environment | |
source /etc/environment && export PATH | |
hash -r |
* Cài đặt NVIDIA-SDK (Cài đặt trước khi compile ffmpeg) ``` cd ~/ffmpeg_sources && \ git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git && \ cd nv-codec-headers && \ make install ``` * Trong file setup ffmpeg thêm vào biến `CUDA_DIR="/usr/local/cuda"` dẫn tới thư mục install CUDA, * Dòng 77 `--extra-cflags="-I$HOME/ffmpeg_build/include" \` đổi thành `--extra-cflags="-I$HOME/ffmpeg_build/include -I$CUDA_DIR/include/" \` * Dòng 78 `--extra-ldflags="-L$HOME/ffmpeg_build/lib" \` đổi thành `--extra-ldflags="-L$HOME/ffmpeg_build/lib -L$CUDA_DIR/lib64/"` * Thêm vào các option sau trong configure ffmpeg: `--enable-cuda \` `--enable-cuda-nvcc \` `--enable-cuvid \` `--enable-libnpp \` `--enable-nvenc \ `
Cảm ơn Nam chia sẻ!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
CUDA_DIR="/usr/local/cuda"
dẫn tới thư mục install CUDA,--extra-cflags="-I$HOME/ffmpeg_build/include" \
đổi thành--extra-cflags="-I$HOME/ffmpeg_build/include -I$CUDA_DIR/include/" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
đổi thành--extra-ldflags="-L$HOME/ffmpeg_build/lib -L$CUDA_DIR/lib64/"
--enable-cuda \
--enable-cuda-nvcc \
--enable-cuvid \
--enable-libnpp \
--enable-nvenc \