Ubuntu ffmpeg开发环境搭建

本文参考《零声学院 ⾳视频⾼级教程 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) 。

 

由于我的编译目录和文档不同,过程中遇到的报错基本上都是命令格式和路径导致的,如果解决报错竟然用了几个小时…最终编译成功。

 

6d81800a19d8bc3ece1217c53684f017a8d345bb-1

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容