目录

一、下载ffmpeg源码

二、准备ffmpeg依赖环境

三、编译ffmpeg

四、编译成果

补充

运行c/c++程序出现找不到头文件问题


一、下载ffmpeg源码

        直接使用git命令下载即可。

git clone https://git.ffmpeg.org/ffmpeg.git

二、准备ffmpeg依赖环境

        另外这里附上官方的在linux环境下编译ffmpeg的过程,有需要的可以直接去官网查看:CompilationGuide/Ubuntu – FFmpeg

sudo apt-get update

sudo apt-get -y install autoconf automake build-essential \
libass-dev libfreetype6-dev libsdl2-dev libtheora-dev \
libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev \
libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev

/* 如果不行的话还可以加上这个,本人编译的时候是先试了下面这个,然后才是上面那个 */
sudo apt-get update -qq && sudo apt-get -y install \
  autoconf \
  automake \
  build-essential \
  cmake \
  git-core \
  libass-dev \
  libfreetype6-dev \
  libgnutls28-dev \
  libmp3lame-dev \
  libsdl2-dev \
  libtool \
  libva-dev \
  libvdpau-dev \
  libvorbis-dev \
  libxcb1-dev \
  libxcb-shm0-dev \
  libxcb-xfixes0-dev \
  meson \
  ninja-build \
  pkg-config \
  texinfo \
  wget \
  yasm \
  zlib1g-dev

三、编译ffmpeg

cd ffmpeg

/* 先编译出最基本的ffmpeg,后续学习如有需要还可以继续添加 */
// --enable-shared:指的是编译出动态库
// --prefix=/usr/local/ffmpeg:指定ffmpeg在执行make install所安装的路径
./configure --enable-shared --prefix=/usr/local/ffmpeg

/* 好像linux是多核的话在make的时候可以使用多线程,比如:make -j16就是使用16个线程进行make。
使用多线程速度会比单单使用make要快 */
make

make install

四、编译成果

/* 进行环境变量配置 */
sudo vim /etc/ld.so.conf

=============以下是往 /etc/ld.so.conf 文件的最后一行添加的=============
/usr/local/ffmpeg/lib/
=====================================================================
不加的话在执行最后一条命令的时候就会报错:
./ffmpeg: error while loading shared libraries: libavdevice.so.59: cannot open shared object file: No such file or directory

sudo ldconfig

sudo vim /etc/profile
=============以下是往 /etc/ld.so.conf 文件的最后一行添加的=============
export PATH=/usr/local/ffmpeg/bin:$PATH
=====================================================================

source /etc/profile

ffmpeg -version
=============以下是 ffmpeg -version 命令执行成果所显示的=============
ffmpeg version N-106653-ga64e250680 Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
configuration: --enable-shared --prefix=/usr/local/ffmpeg
libavutil      57. 24.101 / 57. 24.101
libavcodec     59. 26.100 / 59. 26.100
libavformat    59. 22.100 / 59. 22.100
libavdevice    59.  6.100 / 59.  6.100
libavfilter     8. 35.100 /  8. 35.100
libswscale      6.  6.100 /  6.  6.100
libswresample   4.  6.100 /  4.  6.100
===================================================================

        如果遇到了执行source /etc/profile命令之后终端字体颜色变成白色或者设置的环境变量只对当前终端有效(当关闭该终端打开另一终端时,设置的环境变量失效了),可以重启一下虚拟机试试。

=========================================================================

补充

运行c/c++程序出现找不到头文件问题

比如:

 解决方法:

使用pkg-config。参考:pkg-config的作用和用法_牧羊女说的博客-CSDN博客_pkg-config

关于pkg-config的介绍可以查看上面那一篇文章。

如果直接执行 pkg-config --cflags --libs libavutil 的话会出现如下内容:

原因是找不到.pc文件。默认情况下,会去/usr/lib/pkgconfig/路径下查找若找不到,则会去PKG_CONFIG_PATH环境变量指定的路径下查找。

 ①添加如下内容到环境变量中:

# 去 ~/.bashrc配置也行
vim /etc/profile

# export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/xxx/xxx/lib/pkgconfig
# 例如:我的ffmpeg在/usr/local/ffmpeg/下
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/ffmpeg/lib/pkgconfig 

# source ~/.bashrc
source /etc/profile

 ②把在 /usr/local/ffmpeg/lib/pkgconfig 里的所有.pc文件复制到 /usr/lib/pkgconfig 路径下。

sudo cp /usr/local/ffmpeg/lib/pkgconfig/* /usr/lib/pkgconfig

 配置好后检查成果:

gcc log.c -o log `pkg-config --libs --cflags libavutil`

大功告成!! 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐