本文参考《零声学院 ⾳视频⾼级教程 ubuntu ffmpeg开发环境搭建0.2》 进行操作。
虚拟机版本:VMware 16
Linux版本:Ubuntu desktop 16.04
FFmpeg版本:4.2.1
使用源码的方式编译和安装,本编译安装方式最终生成的皆为静态库
下面代码块的命令复制粘贴可能受到换行符影响,请按需修改。
1 创建工作目录
在目录下创建
ffmpeg_sources:用于下载源文件
ffmpeg_build: 存储编译后的库文件
bin:存储二进制文件(ffmpeg,ffplay,ffprobe,X264,X265等)
cd ~/work/ffmpeg mkdir ffmpeg_sources ffmpeg_build bin
2 安装依赖
#更新 sudo apt-get update #安装需要的组件 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
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
3 编译与安装
NASM
部分库使用到汇编程序
使用源码进行安装:
cd ~/work/ffmpeg/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/work/ffmpeg/bin:$PATH" ./configure --prefix="$HOME/work/ffmpeg/ffmpeg_build" --bindir="$HOME/work/ffmpeg/bin" &&make && make install
cd ~/work/ffmpeg/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/work/ffmpeg/bin:$PATH” ./configure –prefix=”$HOME/work/ffmpeg/ffmpeg_build” –bindir=”$HOME/work/ffmpeg/bin” &&make && make install
Yasm
部分库使用到该汇编库
使用源码进行安装:
cd ~/work/ffmpeg/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/work/ffmpeg/ffmpeg_build" --bindir="$HOME/work/ffmpeg/bin" && \ make && \ make install
cd ~/work/ffmpeg/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/work/ffmpeg/ffmpeg_build” –bindir=”$HOME/work/ffmpeg/bin” && make && make install
libx264
H.264视频编码器。更多信息和使用范例参考H.264 Encoding Guide
要求编译ffmpeg时配置:–enable-gpl –enable-libx264.
使用源码进行编译
cd ~/work/ffmpeg/ffmpeg_sources && \ git -C x264 pull 2> /dev/null || git clone --depth 1 https://gitee.com/mirrors_addons/x264.git && \ cd x264 && \ PATH="$HOME/work/ffmpeg/bin:$PATH" PKG_CONFIG_PATH="$HOME/work/ffmpeg/ffmpeg_build/lib/pkgconfig" ./configure \ --prefix="$HOME/work/ffmpeg/ffmpeg_build" --bindir="$HOME/work/ffmpeg/bin" --enable-static --enable-pic && \ PATH="$HOME/work/ffmpeg/bin:$PATH" make && \ make install
cd ~/work/ffmpeg/ffmpeg_sources && git -C x264 pull 2> /dev/null || git clone –depth 1 https://gitee.com/mirrors_addons/x264.git && cd x264 && PATH=”$HOME/work/ffmpeg/bin:$PATH” PKG_CONFIG_PATH=”$HOME/work/ffmpeg/ffmpeg_build/lib/pkgconfig” ./configure –prefix=”$HOME/work/ffmpeg/ffmpeg_build” –bindir=”$HOME/work/ffmpeg/bin” –enable-static –enable-pic && PATH=”$HOME/work/ffmpeg/bin:$PATH” make && make install
libx265
H.265/HEVC 视频编码器, 更多信息和使用范例参考H.265 Encoding Guide。
要求编译ffmpeg时配置:–enable-gpl –enable-libx265.
使用源码进行编译:
sudo apt-get install mercurial libnuma-dev && \ cd ~/work/ffmpeg/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/work/ffmpeg/bin:$PATH" cmake -G "Unix Makefiles" - \ DCMAKE_INSTALL_PREFIX="$HOME/work/ffmpeg/ffmpeg_build" -DENABLE_SHARED=off ../../source && \ PATH="$HOME/work/ffmpeg/bin:$PATH" make && \ make install
#如果上面的报错可以试试这个
sudo apt-get install mercurial libnuma-dev && cd ~/work/ffmpeg/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/work/ffmpeg/bin:$PATH” cmake -G “Unix Makefiles” – DCMAKE_INSTALL_PREFIX=”$HOME/work/ffmpeg/ffmpeg_build” -DENABLE_SHARED=off ../../source && PATH=”$HOME/work/ffmpeg/bin:$PATH” make && make install
libvpx
VP8/VP9视频编解码器。 更多信息和使用范例参考VP9 Video Encoding Guide 。
要求编译ffmpeg时配置: –enable-libvpx.
使用源码进行编译:
cd ~/work/ffmpeg/ffmpeg_sources && \ git -C libvpx pull 2> /dev/null || git clone --depth 1 https://github.com/webmproject/libvpx.git && \ cd libvpx && \ PATH="$HOME/work/ffmpeg/bin:$PATH" ./configure --prefix="$HOME/work/ffmpeg/ffmpeg_build" --disable-examples -- \ disable-unit-tests --enable-vp9-highbitdepth --as=yasm --enable-pic && \ PATH="$HOME/work/ffmpeg/bin:$PATH" make && \ make install
cd ~/work/ffmpeg/ffmpeg_sources && git -C libvpx pull 2> /dev/null || git clone –depth 1 https://github.com/webmproject/libvpx.git && cd libvpx && PATH=”$HOME/work/ffmpeg/bin:$PATH” ./configure –prefix=”$HOME/work/ffmpeg/ffmpeg_build” –disable-examples –disable-unit-tests –enable-vp9-highbitdepth –as=yasm –enable-pic && PATH=”$HOME/work/ffmpeg/bin:$PATH” make && make install
libfdk-aac
AAC音频编码器. 更多信息和使用范例参考AAC Audio Encoding Guide。
要求编译ffmpeg时配置:–enable-libfdk-aac ( 如果你已经配置了 –enable-gpl则需要加上–enable nonfree).
使用源码进行编译:
cd ~/work/ffmpeg/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 CFLAGS=-fPIC --prefix="$HOME/work/ffmpeg/ffmpeg_build" && \ make && \ make install
libmp3lame
MP3音频编码器.
要求编译ffmpeg时配置:–enable-libmp3lame.
使用源码进行编译:
cd ~/work/ffmpeg/ffmpeg_sources && \ git clone --depth 1 https://gitee.com/hqiu/lame.git && \ cd lame && \ PATH="$HOME/work/ffmpeg/bin:$PATH" ./configure --prefix="$HOME/work/ffmpeg/ffmpeg_build" --bindir="$HOME/work/ffmpeg/bin" --enable-nasm --with-pic && \ PATH="$HOME/work/ffmpeg/bin:$PATH" make && \ make install
cd ~/work/ffmpeg/ffmpeg_sources && git clone –depth 1 https://gitee.com/hqiu/lame.git && cd lame && PATH=”$HOME/work/ffmpeg/bin:$PATH” ./configure –prefix=”$HOME/work/ffmpeg/ffmpeg_build” –bindir=”$HOME/work/ffmpeg/bin” –enable-nasm –with-pic && PATH=”$HOME/work/ffmpeg/bin:$PATH” make && make install
libopus
Opus音频编解码器.
要求编译ffmpeg时配置:–enable-libopus.
使用源码进行编译:
cd ~/work/ffmpeg/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/work/ffmpeg/ffmpeg_build" -with-pic&& \ make && \ make install
cd ~/work/ffmpeg/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/work/ffmpeg/ffmpeg_build” -with-pic&& make && make install
FFmpeg
cd ~/work/ffmpeg/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 && \ export PATH="$HOME/work/ffmpeg/bin:$PATH" PKG_CONFIG_PATH="$HOME/work/ffmpeg/ffmpeg_build/lib/pkgconfig" FLAGS="-O3 -fPIC" \ ./configure \ --prefix="$HOME/work/ffmpeg/ffmpeg_build" \ --pkg-config-flags="--static" \ --extra-cflags="-I$HOME/work/ffmpeg/ffmpeg_build/include" \ --extra-ldflags="-L$HOME/work/ffmpeg/ffmpeg_build/lib" \ --extra-libs="-lpthread -lm" \ --bindir="$HOME/work/ffmpeg/bin" \ --enable-gpl \ --enable-libass \ --enable-libfdk-aac \ --enable-libfreetype \ --enable-libmp3lame \ --enable-libopus \ --enable-libvorbis \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-pic \ --enable-shared \ --enable-nonfree && \ PATH="$HOME/work/ffmpeg/bin:$PATH" make && \ make install && \ hash -r
cd ~/work/ffmpeg/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 && export PATH=”$HOME/work/ffmpeg/bin:$PATH” PKG_CONFIG_PATH=”$HOME/work/ffmpeg/ffmpeg_build/lib/pkgconfig” FLAGS=”-O3 -fPIC”
./configure –prefix=”$HOME/work/ffmpeg/ffmpeg_build” –pkg-config-flags=”–static” –extra-cflags=”-I$HOME/work/ffmpeg/ffmpeg_build/include” –extra-ldflags=”-L$HOME/work/ffmpeg/ffmpeg_build/lib” –extra-libs=”-lpthread -lm” –bindir=”$HOME/work/ffmpeg/bin” –enable-gpl –enable-libass –enable-libfdk-aac –enable-libfreetype –enable-libmp3lame –enable-libopus –enable-libvorbis –enable-libvpx –enable-libx264 –enable-libx265 –enable-pic –enable-shared –enable-nonfree && PATH=”$HOME/work/ffmpeg/bin:$PATH” make && make install && hash -r
然后重新登录系统或者在当前shell会话执行如下命令以识别新安装ffmpeg的位置:
source ~/.profile
现在已经完成编译和安装ffmpeg (also ffplay, ffprobe, lame, x264, & x265) 。
由于我的编译目录和文档不同,过程中遇到的报错基本上都是命令格式和路径导致的,如果解决报错竟然用了几个小时…最终编译成功。
本网站尊重知识产权,如有侵权,请及时联系我们删除。
本站所有原创内容仅用于学习和交流目的,未经作者和本站授权不得进行商业使用或盈利行为。
暂无评论内容