PartI:Linux ffmpeg下载
cd /work/SourceCode/Sourcecode_FFMPEG/sourcecode_ffmpeg ;所有的源代码放在这个自创建目录下
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
下载完成,此路径下生成 ffmpeg/目录
PartII:Linux ffmpeg编译
参考:https://www.cnblogs.com/jimodetiantang/p/9160183.html
1.安装linux的基础环境
sudo apt-get -y install autoconf automake build-essential libtool libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev
2.安装依赖库
2.1 ffmpeg推荐的依赖开发库(不需要独立安装)
sudo apt-get -y install libass-dev libfreetype6-dev libmp3lame-dev libtheora-dev libvorbis-dev libopus-dev libx264-dev yasm
2.2 ffmpeg桌面应用推荐的依赖开发库(不需要独立安装)
sudo apt-get -y install libva-dev libvdpau-dev libsdl2-dev
2.3 需要独立安装的依赖开发库
2.3.1 安装 fdk-aac
cd /work/SourceCode/Sourcecode_FFMPEG/sourcecode_ffmpeg
sudo wget http://downloads.sourceforge.net/opencore-amr/fdk-aac-0.1.5.tar.gz
sudo tar -zxvf fdk-aac-0.1.5.tar.gz && mv fdk-aac-0.1.5 fdk-aac
cd fdk-aac
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
sudo make
sudo make install
sudo make distclean
2.3.2 安装libvpx
cd /work/SourceCode/Sourcecode_FFMPEG/sourcecode_ffmpeg
sudo wget http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-1.6.1.tar.bz2
sudo tar -jxvf libvpx-1.6.1.tar.bz2 && mv libvpx-1.6.1 libvpx
cd libvpx/
PATH="$HOME/bin:$PATH"
./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests
PATH="$HOME/bin:$PATH"
sudo make
sudo make install
sudo make distclean
2.3.3 安装x265
cd /work/SourceCode/Sourcecode_FFMPEG/sourcecode_ffmpeg
sudo apt-get install cmake mercurial
sudo wget https://bitbucket.org/multicoreware/x265/downloads/x265_2.4.tar.gz
sudo tar -zxvf x265_2.4.tar.gz && mv x265_2.4 x265
cd x265/build/linux
PATH="$HOME/bin:$PATH"
sudo cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
sudo make
sudo make install
sudo make clean
2.3.4 安装x264
cd /work/SourceCode/Sourcecode_FFMPEG/sourcecode_ffmpeg
sudo wget https://download.videolan.org/x264/snapshots/x264-snapshot-20170822-2245-stable.tar.bz2
sudo tar -jxvf x264-snapshot-20170822-2245-stable.tar.bz2 && mv x264-snapshot-20170822-2245-stable x264
cd x264
./configure --prefix="$HOME/ffmpeg_build" --enable-shared --enable-pic
sudo make
sudo make install
sudo make distclean
3. 编译ffmpeg
cd /work/SourceCode/Sourcecode_FFMPEG/sourcecode_ffmpeg
[
;若未下载ffmpeg源码
sudo wget http://ffmpeg.org/releases/ffmpeg-3.3.3.tar.xz
tar -Jxvf ffmpeg-3.3.3.tar.xz && mv ffmpeg-3.3.3 ffmpeg
]
cd ffmpeg
PATH="$HOME/bin:$PATH"
export 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" --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"
sudo make
sudo make install
sudo make distclean
sudo hash -r
4. FFmpeg代码Debug
./configure \
--prefix="$HOME/ffmpeg_build/" \
--pkg-config-flags="--static" \
--extra-cflags="-I$HOME/ffmpeg_build/include" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--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 \
--enable-pthreads \
--enable-debug=3 \
--disable-optimizations \
--disable-asm \
--disable-stripping
注:$HOME/ffmpeg_build 定义出ffmpeg build的目录
5.编译遇到的Error
5.1 在编译x265时遇到/usr/local/lib/libcurl.so.4: no version information available (required by /usr/bin/cmake)
(1)
# locate libcurl.so.4
/usr/lib/x86_64-linux-gnu/libcurl.so.4
/usr/lib/x86_64-linux-gnu/libcurl.so.4.4.0
/usr/local/lib/libcurl.so.4
/usr/local/lib/libcurl.so.4.4.0
(2)
# sudo rm -rf /usr/local/lib/libcurl.so.4
(3)
# sudo ln -s /usr/lib/x86_64-linux-gnu/libcurl.so.4 /usr/local/lib/libcurl.so.4
5.2 FFmpeg在./configure时遇到:ERROR: x265 not found using pkg-config
参考:https://blog.csdn.net/bengik/article/details/83898403
(1)查看log
#vim ffbuild/config.log
/home/tssh/ffmpeg_build/lib/libx265.a(threading.cpp.o): In function `x265::Thread::start()':
threading.cpp:(.text+0x35): undefined reference to `pthread_create'
/home/tssh/ffmpeg_build/lib/libx265.a(threading.cpp.o): In function `x265::Thread::stop()':
threading.cpp:(.text+0x63): undefined reference to `pthread_join'
collect2: error: ld returned 1 exit status
ERROR: x265 not found using pkg-config
(2)
在x265/source/common/threading.cpp包含pthread.h
(3)
继续执行 ./configure ... && make && make isntall 完成libx265的编译安装
(4)
完成安装后 在 $(HOME)/ffmpeg_build/lib/pkg-config文件夹下找到x265.pc文件并打开,在Libs.private: -lstdc++ -lm -lrt -ldl后面添加 -lpthread 包含pthread库。
(5)
继续执行既可完成ffmpeg的编译安装