前言
编译ffmpeg真的是一个大工程,尤其是对于不熟c++、cmake、makefile的人来说,经过这次我基本对camke,makefile都有所了解了。祸福相依啊。
下面有几篇草稿是关于这次的编译的,当然,既然是草稿是没必要看的---除非你希望知道编译过程中起码有哪些坑位:
[运维] ubuntu等linux下编译配置ffmpeg以供c++调用[草稿]
[运维] ubuntu等linux下编译配置ffmpeg以供c++调用
[运维] 从动手到放弃之我不要自己编译ffmpeg了 【踩坑篇】
正文
本文针对的是ubuntu以及centos。
本次有一个编译工具的,请先下载,里面已经将所有需要用到的源代码都下载了,---源代码的版本是不能随便下的,有些版本是不支持的,已经试过错了:
[csdn下载地址]FFmpegBuilder-20-01-25.tar.xz
第一,先要配置安装部分软件:
sudo apt-get install build-essential curl tar pkg-config
sudo apt-get -y --force-yes install \
autoconf \
automake \
build-essential \
cmake \
frei0r-plugins-dev \
gawk \
libass-dev \
libfreetype6-dev \
libopencore-amrnb-dev \
libopencore-amrwb-dev \
libsdl1.2-dev \
libsdl2-dev \
libspeex-dev \
libssl-dev \
libtheora-dev \
libtool \
libva-dev \
libvdpau-dev \
libvo-amrwbenc-dev \
libvorbis-dev \
libwebp-dev \
libxcb1-dev \
libxcb-shm0-dev \
libxcb-xfixes0-dev \
libxvidcore-dev \
pkg-config \
texi2html \
zlib1g-dev
## 追加,如果libssl-dev的版本是1.1,那么在编译librtmp时候会出现librtmp的 In function ‘DHInit’ dereferencing pointer to incomplete type ‘DH {aka struct dh_st}’
## 这是librtmp使用的是libssl1.0的缘故
sudo apt-get purge libssl-dev
sudo apt-get install libssl1.0-dev
第二,下载编译工具,解压缩,可以看到:
build_source.sh就是具体编译的脚本,默认将编译到:target的include以及lib下面--头文件和静态库以及动态库。
dl下面就是需要编译的各种第三方源代码:
有些源代码是有多个版本的--譬如libvpx,不过不要紧,脚本的安装调试过程中已经将能够编译通过的尽可能的最新版本给筛选出来了,只要执行脚本即可。
脚本执行为:
./build_source.sh
然后可以看到:
请按照顺序输入编译的包名称,譬如如果要编译yasm就输入yasm,如此类推。
至于为什么要逐个逐个编译,是因为防止万一服务器环境不同而导致某个包编译失败,这样一个一个安装虽然麻烦,但是对于调试以及解决错误却是非常方便。
最后,全部编译完毕之后应该是这样的:
我本身编译在ffmpeg-build目录下面,下面是这样的:
总结
下一篇将讲一下,在qt creator+ cmake下面如何调用ffmpeg。