ubuntu ffmpeg开发环境搭建

配置环境 ubuntu desktop 16.04 + ffmpeg 4.2.1

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

【文尾有FFmpeg学习视频教程?!?/p>

创建目录

在home目录下创建

ffmpeg_sources:用于下载源文件

ffmpeg_build: 存储编译后的库文件

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

cd ~

mkdir ffmpeg_sources? ffmpeg_build bin

安装依赖

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

编译与安装

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

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

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

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

NASM

部分库使用到汇编程序。

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

sudo apt-get install 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

部分库使用到该汇编库

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

sudo apt-get 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

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

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

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

sudo apt-get install libx264-dev

否则使用源码进行编译:

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

libx265

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

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

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

sudo apt-get install libx265-dev libnuma-dev

否则使用源码进行编译:

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

libvpx

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

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

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

sudo apt-get install libvpx-dev

否则使用源码进行编译:

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

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

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

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

sudo apt-get install libfdk-aac-dev

否则使用源码进行编译:

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

MP3音频编码器.

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

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

sudo apt-get install libmp3lame-dev

否则使用源码进行编译:

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

Opus音频编解码器.

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

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

sudo apt-get install libopus-dev

否则使用源码进行编译:

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

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 ,编译有问题。

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

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

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

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

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

使用

现在,您可以打开一个终端,输入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学习视频教程。关注个人简介 领取

最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容