ubuntu ffmpeg开发环境搭建

配置环境 ubuntu desktop 16.04 + ffmpeg 4.2.

建议在《编译与安装》一节,都使用源码的方式编译和安装,本编译安装方式最终生成的皆为静态库。

ubuntu ffmpeg开发环境搭建

【文尾有FFmpeg教程学习】

创建目录


在home目录下创建

ffmpeg_sources:用于下载源文件

ffmpeg_build: 存储编译后的库文件

bin:存储二进制文件(ffmpeg,ffplay,ffprobe,X264,X265等)

<code>cd ~
mkdir ffmpeg_sources ffmpeg_build bin/<code>

安装依赖

<code>sudo apt-get update -qq && 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/<code>


编译与安装

本指南假定您要安装一些最常见的第三方库。每个小节为您提供安装该库所需的命令。

如果不需要某些功能,则可以跳过相关小节(如果不需要),然后在FFmpeg中删除相应的./configure选项。例如,如果不需要libvpx,请跳过该小节,然后从“ 安装FFmpeg”部分中删除--enable-libvpx。

提示:如果要在多核系统中加快编译速度,可以在每个make命令(例如make -j4)中使用-j选项。

建议都使用源码进行安装。

NASM

部分库使用到汇编程序。

如果你系统提供的库nasm版本>=2.13则可以直接使用命令进行安装

<code>sudo apt-get install nasm/<code>
<code>

否则使用源码进行安装

<code>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/<code>


Yasm

部分库使用到该汇编库

如果你系统提供的库yasm版本 ≥ 1.2.0则可以直接使用命令进行安装:

<code>sudo apt-get install yasm/<code>
<code>

否则使用源码进行安装:

<code>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/<code>


libx264

H.264视频编码器。更多信息和使用范例参考H.264 Encoding Guide

要求编译ffmpeg时配置:--enable-gpl --enable-libx264.

如果你系统提供的 libx264-dev版本 ≥ 118 则可以使用命令直接安装:

<code>sudo apt-get install libx264-dev/<code> 
<code>

否则使用源码进行编译:

<code>cd ~/ffmpeg_sources && \\
git -C x264 pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/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/<code>


libx265

H.265/HEVC 视频编码器, 更多信息和使用范例参考H.265 Encoding Guide。

要求编译ffmpeg时配置:--enable-gpl --enable-libx265.

如果你系统提供的 libx265-dev版本≥ 68 则可以使用命令直接安装:

<code>sudo apt-get install libx265-dev libnuma-dev/<code>


否则使用源码进行编译:

<code>sudo apt-get install mercurial libnuma-dev && \\
cd ~/ffmpeg_sources && \\
if cd x265 2> /dev/null; then hg pull && hg update && cd ..; 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=off ../../source && \\
PATH="$HOME/bin:$PATH" make && \\
make install/<code>

libvpx

VP8/VP9视频编解码器。 更多信息和使用范例参考 VP9 Video Encoding Guide 。

要求编译ffmpeg时配置: --enable-libvpx.

如果你系统提供的libvpx-dev version ≥ 1.4.0则可以使用命令直接安装:

<code>sudo apt-get install libvpx-dev/<code>


否则使用源码进行编译:

<code>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/<code>


libfdk-aac

AAC音频编码器. 更多信息和使用范例参考AAC Audio Encoding Guide。

要求编译ffmpeg时配置:--enable-libfdk-aac ( 如果你已经配置了 --enable-gpl则需要加上--enable-nonfree).

如果你系统提供的 libfdk-aac-dev则可以使用命令直接安装:

<code>sudo apt-get install libfdk-aac-dev/<code>

否则使用源码进行编译:

<code>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/<code>

libmp3lame

MP3音频编码器.

要求编译ffmpeg时配置:--enable-libmp3lame.

如果你系统提供的libmp3lame-dev版本≥ 3.98.3则可以使用命令直接安装:

<code>sudo apt-get install libmp3lame-dev/<code>

否则使用源码进行编译:

<code>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/<code>

libopus

Opus音频编解码器.

要求编译ffmpeg时配置:--enable-libopus.

如果你系统提供的libopus-dev 版本≥ 1.1则可以使用命令直接安装:

<code>sudo apt-get install libopus-dev/<code>

否则使用源码进行编译:

<code>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/<code>

libaom

AV1 视频编解码器:

Warning: libaom does not yet appear to have a stable API, so compilation of libavcodec/libaomenc.c may occasionally fail. Just wait a day or two for us to catch up with these annoying changes, re-download ffmpeg-snapshot.tar.bz2, and try again. Or skip libaom altogether.

要求编译ffmpeg时配置:--enable-libaom.

先不支持AV1 ,编译有问题。

<code>cd ~/ffmpeg_sources && \\
git -C aom pull 2> /dev/null || git clone --depth 1 https://github.com/mozilla/aom.git && \\
mkdir -p aom_build && \\
cd aom_build && \\
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off -DENABLE_NASM=on ../aom && \\
PATH="$HOME/bin:$PATH" make && \\
make install
/<code>

FFmpeg

<code>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/<code>

然后重新登录系统或者在当前shell会话执行如下命令以识别新安装ffmpeg的位置:

<code>source ~/.profile/<code>

现在已经完成编译和安装ffmpeg (also ffplay, ffprobe, lame, x264, & x265) 。该文档剩余章节主要讲如何更新和删除ffmepg。

编译完成后,ffmpeg_build ffmpeg_sources bin目录的大体情况

<code>lqf@ubuntu:~/ffmpeg_build$ ls
bin include lib share

lqf@ubuntu:~/ffmpeg_sources$ ls
fdk-aac lame-3.100.tar.gz opus yasm-1.3.0.tar.gz
ffmpeg-4.2.1 libvpx x264
ffmpeg-4.2.1.tar.bz2 nasm-2.14.02 x265
lame nasm-2.14.02.tar.bz2 yasm-1.3.0

lqf@ubuntu:~/bin$ ls
ffmpeg ffplay ffprobe lame nasm ndisasm vsyasm x264 yasm ytasm
/<code>

使用

现在,您可以打开一个终端,输入ffmpeg命令,它应该执行新的ffmpeg。

如果你需要多个用户能同时使用你新编译的ffmpeg,则可以移动或者拷贝ffmpeg二进制文件从~/bin到/usr/local/bin。


测试ffplay是否可以使用(需要在图形方式进行测试)

ffplay rtmp://202.69.69.180:443/webcast/bshdlive-pc

如果能够正常播放则说明 ffplay能够编译成功使用。

文档

你可以使用 man ffmpeg以本地的方式访问文档:

echo "MANPATH_MAP $HOME/bin $HOME/ffmpeg_build/share/man" >> ~/.manpath

你可能必须注销系统然后重新登录man ffmpeg才生效。

HTML 格式的文档位于 ~/ffmpeg_build/share/doc/ffmpeg.

你也可以参考在线文档 online FFmpeg documentation,

FFmpeg学习视频教程。关注个人简介 领取

ubuntu ffmpeg开发环境搭建


希望技术点对你有用


分享到:


相關文章: