centos编译安装ffmpeg过程

前言

最近学习ffmpeg开发,要使用ffmpeg,而且需要二次编译。跟着网上的教程来步步坑,也许是教程太久远,或者是因为每个人的系统情况不一样,我安装编译时处处报错,作为小白,很是难受。后来在wiki上找到一个教程,虽然还会报错,不过能解决,终于编译成功,经测试能够进行开发。现记录过程,防止遗忘。

先放上解决我问题的参考链接
1:Compile FFmpeg on CentOS

2:CentOS6.5升级autoconf版本 Autoconf version 2.64 or higher is required

3:ERROR: freetype2 not found using pkg-config

4:从编译ffmpeg/examples,进而了解pkg-config

一、安装依赖包

1、安装需要使用yum安装的依赖包

wiki上给的教程把autoconfautomakefreetype-devel也使用yum安装了,但后面编译一些库的时候会提示版本过低,所以这里不使用yum安装。

1
yum install bzip2 bzip2-devel cmake gcc gcc-c++ git libtool make mercurial pkgconfig zlib-devel

2、使用源码安装的依赖包

0-新建目录

1
2
mkdir /usr/ffmpeg_sources
mkdir /root/ffmpeg_build

后面的一些源码都会放在这里面。

1-查询并卸载旧版本

1
rpm -qa | grep autoconf

会输出类似autoconf-2.63-5.1.el6.noarch的信息,就说明安装了旧版本的autoconf,接下来卸载:

1
yum remove autoconf

不一定时这样卸载,我因为跟着wiki使用yum安装了旧版本,所以要使用yum卸载。具体查询还有卸载可以去百度,根据自己情况来。

卸载automakefreetype同理。

2-安装autoconf

百度云链接:
autoconf-2.69.tar.gz
提取码:snl6

下载完后传到ffmpeg_sources目录里面,分别输入以下命令安装:

1
2
3
4
tar -zxvf autoconf-2.69.tar.gz
cd autoconf-2.69
./configure --prefix=/usr/
make && make install

3-安装automake

百度云链接:
automake-1.16.2.tar.gz
提取码:ply5

下载完后传到ffmpeg_sources目录里面,分别输入以下命令安装:

1
2
3
4
tar -zxvf automake-1.16.2.tar.gz
cd automake-1.16.2
./configure --prefix=/usr/
make && make install

4-安装freetype2

百度云链接:
freetype-2.10.0.tar.bz2
提取码:d8lg

下载完后传到ffmpeg_sources目录里面,分别输入以下命令安装:

1
2
3
4
tar -xjvf freetype-2.10.0.tar.bz2
cd freetype-2.10.0
./configure --prefix="$HOME/ffmpeg_build"
make && make install

然后需要在 include/freetype2 文件夹中建立向上一层的软连接。

1
2
ln -s /root/ffmpeg_build/include/freetype2/freetype /root/ffmpeg_build/include/freetype
ln -s /root/ffmpeg_build/include/freetype2/ft2build.h /root/ffmpeg_build/include/ft2build.h

到此就处理完三个“坑”了。

二、安装ffmpeg外部依赖的音视频编码器

1、安装NASM

百度云资源:
nasm-2.14.02.tar.bz2
提取码:4un5

下载完后传到ffmpeg_sources目录里面,分别输入以下命令安装:

1
2
3
4
5
tar -xjvf nasm-2.14.02.tar.bz2
cd nasm-2.14.02
./autogen.sh
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make && make install

2、安装Yasm

百度云资源:
yasm-1.3.0.tar.gz
提取码:uw3n

下载完后传到ffmpeg_sources目录里面,分别输入以下命令安装:

1
2
3
4
tar -xzvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make && make install

3、安装libx264

百度云资源:
x264-master.tar-1.gz
提取码:njwm

下载完后传到ffmpeg_sources目录里面,分别输入以下命令安装:

1
2
3
4
tar -xzvf x264-master.tar-1.gz
cd x264-master
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make && make install

4、安装libx265

百度云资源:
x265_3.2.1.tar.gz
提取码:d6kb

下载完后传到ffmpeg_sources目录里面,分别输入以下命令安装:

1
2
3
4
tar -xzvf x265_3.2.1.tar.gz
cd x265_3.2.1/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make && make install

5、安装libfdk_aac

百度云资源:
fdk-aac-2.0.1.tar.gz
提取码:7k1w

下载完后传到ffmpeg_sources目录里面,分别输入以下命令安装:

1
2
3
4
5
tar -xzvf fdk-aac-2.0.1.tar.gz
cd fdk-aac-2.0.1
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make && make install

6、安装libmp3lame

百度云资源:
lame-3.100.tar.gz
提取码:0ak7

下载完后传到ffmpeg_sources目录里面,分别输入以下命令安装:

1
2
3
4
tar -xzvf lame-3.100.tar.gz
cd lame-3.100
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm
make && make install

7、安装libopus

百度云资源:
opus-1.3.1.tar.tar
提取码:xw23

下载完后传到ffmpeg_sources目录里面,分别输入以下命令安装:

1
2
3
4
tar -xzvf opus-1.3.1.tar.gz
cd opus-1.3.1
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make && make install

8、安装libvpx

百度云资源:
libvpx.git-7ec7a33a081aeeb53fed1a8d87e4cbd18915252.gz
提取码:1v0y

注意
先在ffmpeg_sources目录中新建一个目录libvpx

1
mkdir /usr/ffmpeg_sources/libvpx

下载完后传到libvpx目录里面,分别输入以下命令安装:

1
2
3
tar -xzvf libvpx.git-7ec7a33a081aeeb53fed1a8d87e4cbd18915252.gz
./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm
make && make install

到此这些编码器就安装完了。

三、安装ffmpeg

百度云资源:
ffmpeg-snapshot.tar.bz2
提取码:a1bc

下载完后传到ffmpeg_sources目录里面,分别输入以下命令安装:

1
2
3
4
tar xjvf ffmpeg-snapshot.tar.bz2
cd ffmpeg
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 --extra-libs=-lm --bindir="$HOME/bin" --enable-gpl --enable-libfdk_aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
make && make install

安装过程有点漫长。。。

四、环境变量配置

上面ffmpeg就已经安装完了,可以直接使用,但是如果想要使用它的源码进行开发,就得添加环境变量。

打开/etc/profile文件:

1
vim /etc/profile

shift + G跳到文件最后一行,
i进入编辑模式,
在后面加一行:

1
export PKG_CONFIG_PATH=/root/ffmpeg_build/lib/pkgconfig:$PKG_CONFIG_PATH

shift + ZZ保存并退出。
然后更新配置文件:

1
source /etc/profile

这样就可以使用源码进行开发了,比如,
我新建一个hellow_world.c文件:

1
vim hello_world.c

在里面写入程序:

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
#include<libavutil/log.h>

int main(int argc, char* argv[])
{
        av_log_set_level(AV_LOG_DEBUG);

        av_log(NULL, AV_LOG_INFO, "Hello World! %s\n", "你好ffmpeg");
        return 0;
}

这里面包含的一个头文件libavutil/log.h就是ffmpeg的源码。

退出来进行编译:

1
gcc -g -o hellow_world hello_world.c `pkg-config --libs --cflags libavutil`

能够编译成功。

五、问题

虽然前前后后把ffmpeg编译成功了,但我发现编译之后并没有ffplay。等到后面解决会再次更新,大佬看见的话还请指教一二。