前言
最近学习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上给的教程把autoconf、automake、freetype-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卸载。具体查询还有卸载可以去百度,根据自己情况来。
卸载automake和freetype同理。
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。等到后面解决会再次更新,大佬看见的话还请指教一二。