1、Windows下编译
1.1 下载msys2
下载地址:https://download.csdn.net/download/qq_23350817/86237421
选择安装目录
安装完毕后打开命令行工具mingw64.exe
1.2 使用msys2安装包
参考:https://blog.csdn.net/tanziliang98/article/details/122401214
注意msys安装软件可能会报错:“文件/var/cache/…已损坏,打算删除吗?”的错误
解决方法:执行 pacman -S msys2-keyring
查看是否有fdk、SDL2相关包
pacman -Sl | grep -Ei 'fdk|sdl2'
结果如下
随后安装依赖:
# 编译工具链 pacman -S mingw-w64-x86_64-toolchain pacman -S mingw-w64-x86_64-yasm pacman -S mingw-w64-x86_64-SDL2 pacman -S mingw-w64-x86_64-fdk-aac pacman -S mingw-w64-x86_64-x264 pacman -S mingw-w64-x86_64-x265 pacman -S make
1.3 编译ffmpeg
下载ffmpeg:https://download.csdn.net/download/qq_23350817/86237423
进入ffmpeg源码目录:
执行ffmpeg编译:
./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265 make -j8 make install
安装过程比较漫长、而且安装过程中可能长时间没有任何打印,需要等待。
编译完成后,执行ffmpeg -version
查看编译的ffmpeg版本,编译后的exe位于/msys64/mingw64/bin目录下
注意:安装可能会报错
解决方法:执行 pacman -S diffutils
2、Ubuntu 16.04下编译FFmpeg
2.1 创建目录
(1) 在home目录下创建 ffmpeg_sources、ffmpeg_build、bin三个文件夹。其中 ffmpeg_sources:用于下载源文件,ffmpeg_build: 存储编译后的库文件,bin:存储二进制文件(ffmpeg,ffplay,ffprobe,X264,X265等)
(2)安装需要的组件
sudo apt-get -y install \ autoconf \ automake \ build-essential \ cmake \ git-core \ libass-dev \ libfreetype6-dev \ libsdl2-dev \ libtool \ libva-dev \ libvdpau-dev \ libvorbis-dev \ libxcb1-dev \ libxcb-shm0-dev \ libxcb-xfixes0-dev \ pkg-config \ texinfo \ wget \ zlib1g-dev
源码安装nasm
cd ~/ffmpeg_sources && \ wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2 && \ tar xjvf nasm-2.14.02.tar.bz2 && \ cd nasm-2.14.02 && \ ./autogen.sh && \ PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \ make && \ make install
源码安装Yasm
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
源码安装libx264
cd ~/ffmpeg_sources && \ git -C x264 pull 2> /dev/null || git clone --depth 1 https://gitee.com/mirrors_addons/x264.git && \ cd x264 && \ PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-pic && \ PATH="$HOME/bin:$PATH" make && \ make install
源码安装libx265
sudo apt-get install mercurial libnuma-dev && \ cd ~/ffmpeg_sources && \ if cd x265 2> /dev/null; then git pull && cd ..; else git clone https://gitee.com/mirrors_videolan/x265.git; fi && \ cd x265/build/linux && \ PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source && \ PATH="$HOME/bin:$PATH" make && \ make install
源码安装libvpx
cd ~/ffmpeg_sources && \ git -C libvpx pull 2> /dev/null || git clone --depth 1 https://github.com/webmproject/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
源码安装libfdk-aac
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
源码安装libmp3lame
cd ~/ffmpeg_sources && \ git clone --depth 1 https://gitee.com/hqiu/lame.git && \ cd lame && \ PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm && \ PATH="$HOME/bin:$PATH" make && \ make install
源码安装libopus
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
注意:如果碰到github上代码拉不下里的情况,最好是自己手动在github上或者从别的地方down下载下来,然后放入~/ffmpeg_sources
目录后解压,然后跳过 git -C opus pull 2> /dev/null || git clone --depth 1 https://xxx.git
这个环节。
(3)下载ffmpeg源码:https://download.csdn.net/download/qq_23350817/86237423,然后解压
(4)编译ffmpeg源码
cd ~/ffmpeg_sources && \ wget -O ffmpeg-4.2.1.tar.bz2 https://ffmpeg.org/releases/ffmpeg-4.2.1.tar.bz2 && \ tar xjvf ffmpeg-4.2.1.tar.bz2 && \ cd ffmpeg-4.2.1 && \ 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-libvorbis \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-nonfree && \ PATH="$HOME/bin:$PATH" make && \ make install && \ hash -r
然后重新登录系统或者在当前shell会话执行如下命令以识别新安装ffmpeg的位置:
source ~/.profile
参考资料: