FFmpeg开发环境搭建

FFmpeg是音视频开发必备的库,也是唯一的库。本文主要讲解在ubuntu22和macOS14环境下的编译安装。

为什么要自己编译呢?其中一个很重要的原因就是ffmpeg在编译时可以加入很多插件,这种特定的库网络上可能找不到编译好的版本,另外如果需要在ffmpeg基础上进行二次开发,也需要进行手动编译。

对于新手只推荐在Linux/macOS上进行编译。经过本人的测试ffmpeg4/5/6都能在这两个系统上轻松搞定,但是windows上编译非常困难。windows上编译一般依赖于MSYS2,这个鬼东西貌似不能选定安装库的版本,只能用它内部设定的最新版。所以ffmpeg6是可以编译成功的,但是ffmpeg4编译非常困难,本人编译了五六次均以失败告终。windows建议安装虚拟机后在虚拟机配置ffmpeg开发环境,然后使用开发用具例如clion、vscode连接到虚拟机进行开发,效果和本地安装的ffmpeg一样。

本文编译主要的参考资料:

CompilationGuide – FFmpeg

CompilationGuide/Ubuntu – FFmpeg

CompilationGuide/macOS – FFmpeg

能科学上网的同学直接看官方资料也是没问题的,另外官方资料还能切换版本也是非常方便。

一、ubuntu进行编译

1 创建目录

在home目录下创建 ffmpeg_sources:

用于下载源文件 ffmpeg_build:

存储编译后的库文件 bin:

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

cd ~ mkdir ffmpeg_sources ffmpeg_build bin

创建完成后应该有这三个文件

2 安装依赖

ubuntu安装起来非常方便,直接使用apt-get命令就可以了。

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

安装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:

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

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

sudo apt-get install mercurial libnuma-dev && \
cd ~/ffmpeg_sources && \
if cd x265 2> /dev/null; then git pull && cd ..; else git clone https://gitee.com/mirrors_videolan/x26
5.git; 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

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 --enable-pic && \
PATH="$HOME/bin:$PATH" make && \
make install

安装libfdk-aac

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 CFLAGS=-fPIC --prefix="$HOME/ffmpeg_build" && \
make && \
make install

安装libmp3lame

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" --
enable-nasm --with-pic && \
PATH="$HOME/bin:$PATH" make && \
make install

安装libopus

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" -with-pic&& \
make && \
make install

安装FFmpeg --- 不带debug功能版本

如果需要安装带debug版本./configure后的内容需要更改,后面会有说明。

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" CFLAGS="-
O3 -fPIC" ./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-pic \
 --enable-shared \
 --enable-nonfree && \
PATH="$HOME/bin:$PATH" make && \
make install && \
hash -r

执行完成命令后source ~/.profile激活配置

需要编译debug功能的版本首先执行make clean清除编译结果,再执行配置

./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-pic \
--enable-shared \
--enable-nonfree \
--enable-debug=3 \
--disable-optimizations \
--disable-asm \
--disable-stripping && \
PATH="$HOME/bin:$PATH" make && \
make install && \
hash -r

-–enable-debug=3:开启debug调试 -–disable-asm:禁用 asm 优化 --disable-optimizations:禁用优化,以便调试时按函数顺序执行。 –-disable-stripping:禁用剥离可执行程序和共享库,即调试时可以进入到某个函数进行单独调试。

编译完成后目录下应该有如下文件。源码不需要了可以删除。

 

 

验证的话可以在命令行使用ffplay命令播放视频,例如ffplay tokyo_hot.mp4

二、MACOS进行编译

macOS也可以安装ubuntu虚拟机进行编译,arm版本的ubuntu也能成功编译。

macOS使用homebrew作为包管理工具,因此需要先安装brew。官方网站:Homebrew — The Missing Package Manager for macOS (or Linux)

安装命令:

xcode-select --install

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装完成后使用homebrew安装第三方库

brew install --build-from-source automake
brew install fdk-aac
brew install lame
brew install libass
brew install libtool
brew install libvorbis
brew install libvpx
brew install libvo-aacenc
brew install opencore-amr
brew install openjpeg
brew install opus
brew install speex
brew install texi2html
brew install x264
brew install --build-from-source x265
brew install xvid
brew install yasm
brew install freetype
brew install pkg-config
brew install schroedinger
brew install shtool
brew install --build-from-source theora
brew install --build-from-source wget
brew install --build-from-source sdl2

配置编译ffmpeg

/configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-versi
on3 --enable-nonfree --enable-postproc --enable-libass --enable-l
ibcelt --enable-libfdk-aac --enable-libfreetype --enable-libmp3lam
e --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-l
ibopenjpeg --enable-openssl --enable-libopus --enable-libspeex --e
nable-libtheora --enable-libvorbis --enable-libvpx --enable-libx
264 --enable-libxvid --disable-static --enable-shared

make -j4
sudo make install

配置环境变量:

export PATH="$PATH:/usr/local/ffmpeg/bin"
source ~/.base_profile

测试:ffplay 播放本地视频即可,ffplay tokyohot.mp4

这是一条吃饭博客,由挨踢零声赞助。学C/C++就找挨踢零声,加入挨踢零声,面试不挨踢!

  • 20
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值