ubuntu ffmpeg6.0开发环境搭建

腾讯课堂 零声教育 音视频高级教程 ubuntu ffmpeg开发环境搭建

配置环境 ubuntu desktop 16.04 + ffmpeg 6.0
建议在《编译与安装》一节,都使用源码的方式编译和安装,本编译安装方式最终生成的皆为静态库。
部分命令说明:
git -C [git-command] 指定其它路径的仓库 执行命令 注意,-C 要在命令之前

编译参考:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

本课程对于Linux系统仅仅支持Ubuntu编译,centos请自行参考:https://trac.ffmpeg.org/wiki/CompilationGuide/Centos

本教程支持:

  • x264/x265/fdk-aac/mp3lame/vpx/libopus等第三方库的集成
  • 支持静态库和的动态库的链接

1 创建目录

在home目录下创建

  • ffmpeg6.0_sources:用于下载源文件
  • ffmpeg6.0_build: 存储编译后的库文件
  • bin6.0:存储二进制文件(ffmpeg,ffplay,ffprobe,X264,X265等)

在home目录创建搭建过程中需要的目录

cd ~
mkdir ffmpeg6.0_sources  ffmpeg6.0_build bin6.0

这里增加6.0的标识是为了和其他ffmpeg版本做区分。

2 安装依赖

安装ffmpeg需要使用到一些编译工具以及一些第三方库,需要通过命令安装。

更新
sudo apt-get update

安装需要的组件
sudo apt-get -y install \
  autoconf \
  automake \
  build-essential \
  cmake \
  git-core \
  libass-dev \
  libfreetype6-dev \
  lib**sdl2-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 install libasound2-dev
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglew-dev
sudo apt-get install libglm-dev
sudo apt-get install mercurial libnuma-dev

3 源码编译与安装第三方库

本指南假定您要安装一些最常见的第三方库。每个小节为您提供安装该库所需的命令。
如果不需要某些功能,则可以跳过相关小节(如果不需要),然后在FFmpeg中删除相应的./configure选项。例如,如果不需要libvpx,请跳过该小节,然后从"安装FFmpeg"部分中删除–enable-libvpx。
提示:如果要在多核系统中加快编译速度,可以在每个make命令(例如make -j4)中使用-j选项。

FFmpeg api -> 封装的编码器,比如H264_encoder -> 依赖x264开源项目

3.1 NASM

部分库使用到汇编程序。
使用源码进行安装

cd ~/ffmpeg6.0_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 
./configure --prefix="$HOME/ffmpeg6.0_build" --bindir="$HOME/bin6.0" 
make -j4
make install

3.2 Yasm

部分库使用到该汇编库
使用源码进行安装:

cd ~/ffmpeg6.0_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   CFLAGS="-fPIC" CPPFLAGS="-fPIC"  --prefix="$HOME/ffmpeg6.0_build" --bindir="$HOME/bin6.0" 
make 
make install

3.3 libx264

H.264视频编码器。更多信息和使用范例参考H.264 Encoding Guide
要求编译ffmpeg时配置:–enable-gpl --enable-libx264.
使用源码进行编译:

cd ~/ffmpeg6.0_sources 
git clone --depth 1 https://github.com/mirror/x264.git 
cd x264 
PKG_CONFIG_PATH="$HOME/ffmpeg6.0_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg6.0_build" --bindir="$HOME/bin6.0" --enable-static --enable-shared --enable-pic 
make 
make install

3.4 libx265

H.265/HEVC 视频编码器, 更多信息和使用范例参考H.265 Encoding Guide
要求编译ffmpeg时配置:–enable-gpl --enable-libx265.
使用源码进行编译:

cd ~/ffmpeg6.0_sources 
git clone https://gitee.com/mirrors_videolan/x265.git
cd x265/build/linux 
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg6.0_build" -DENABLE_SHARED=on -DENABLE_PIC=on -DBIN_INSTALL_DIR="$HOME/bin6.0" ../../source 
make 
make install

3.5 libvpx

VP8/VP9视频编解码器。 更多信息和使用范例参考VP9 Video Encoding Guide
要求编译ffmpeg时配置: --enable-libvpx
使用源码进行编译:

cd ~/ffmpeg6.0_sources 
git clone --depth 1 https://github.com/webmproject/libvpx.git
cd libvpx 
./configure --prefix="$HOME/ffmpeg6.0_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm --enable-pic  --enable-shared
make 
make install

3.6 libfdk-aac

AAC音频编码器. 更多信息和使用范例参考AAC Audio Encoding Guide
要求编译ffmpeg时配置:–enable-libfdk-aac ( 如果你已经配置了 --enable-gpl则需要加上–enable-nonfree).
使用源码进行编译:

cd ~/ffmpeg6.0_sources 
git clone --depth 1 https://github.com/mstorsjo/fdk-aac.git
cd fdk-aac 
autoreconf -fiv 
./configure CFLAGS="-fPIC" CPPFLAGS="-fPIC" --prefix="$HOME/ffmpeg6.0_build" --bindir="$HOME/bin6.0"  
make 
make install

3.7 libmp3lame

MP3音频编码器.
要求编译ffmpeg时配置:–enable-libmp3lame.

使用源码进行编译:

cd ~/ffmpeg6.0_sources 
git clone  --depth 1 https://gitee.com/hqiu/lame.git 
cd lame 
./configure --prefix="$HOME/ffmpeg6.0_build" --bindir="$HOME/bin6.0"  --enable-nasm --with-pic 
make 
make install

3.8 libopus

Opus音频编解码器.
要求编译ffmpeg时配置:–enable-libopus.
使用源码进行编译:

cd ~/ffmpeg6.0_sources 
git clone --depth 1 https://github.com/xiph/opus.git 
cd opus 
./autogen.sh 
./configure --prefix="$HOME/ffmpeg6.0_build"  -with-pic
make 
make install

4 FFmpeg

4.1 编译和安装

下载代码

cd ~/ffmpeg6.0_sources 
git clone https://github.com/FFmpeg/FFmpeg.git
cd FFmpeg
git checkout  remotes/origin/release/6.0

编译代码:

PKG_CONFIG_PATH="$HOME/ffmpeg6.0_build/lib/pkgconfig" ./configure \
  --prefix="$HOME/ffmpeg6.0_build" \
  --extra-libs="-lpthread -lm" \
  --bindir="$HOME/bin6.0" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I/home/lqf/ffmpeg6.0_build/include" \
  --extra-cflags="-I/home/lqf/ffmpeg6.0_build/include/fdk-aac" \
  --extra-ldflags="-L/home/lqf/ffmpeg6.0_build/lib" \
  --enable-gpl \
  --enable-libass \
  --enable-libfreetype \
  --enable-libvorbis \
  --enable-pic \
  --enable-shared   \
  --enable-static \
  --enable-nonfree \
  --enable-libx264 \
  --enable-libx265 \
  --enable-libvpx  \
  --enable-libfdk-aac \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-sdl2   \
  --enable-ffplay \
  --disable-optimizations \
  --disable-stripping \
  --enable-debug=3

这里没有做编译优化,目的是学习过程中方便debug

ffmpeg ffplay ffprobe

4.2 测试ffmpeg命令

终端输入

ffmpeg -version

正常显示ffmpeg版本信息,以及编译配置信息。

如果报以下错误(找不到so库):
image.png
需要将ffmpeg lib加入到环境变量。步骤如下所述:

  1. 编辑和修改/etc/ld.so.conf

sudo vim /etc/ld.so.conf
比如:
image.png

  1. 使环境变量生效

然后:
sudo ldconfig

4.2 测试ffplay命令

测试ffplay是否可以使用(需要在Ubuntu图形方式进行测试,不能在类似xshell终端测试)

ffplay http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4
ffplay http://mirror.aarnet.edu.au/pub/TED-talks/911Mothers_2010W-480p.mp4

(网络链接经常失效,找个本地视频文件播放也可以的)
如果能够正常播放则说明 ffplay能够编译成功使用。播放的时候要等等画面。

测试本地文件,比如:

ffplay test.mp4
ffplay /home/lqf/test.mp4

添加环境变量,比如
sudo vim /etc/profile
然后加上
export PATH=$PATH:/home/lqf/bin6.0

记得
source /etc/profile
使得环境变量生效

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流媒体程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值