自己编译ffmpeg也是一件烦心事 当你知道基本的流程以后就知道是有多简单。当你啥也不知道的时候,看着网上乱七八糟的博客,心里头那个气愤啊。(明明就是按照这个步骤来的,为什么他可以我就不可以)
刚毕业有一个后台项目 ,只是依赖ffmpeg的一个小功能。需要在linux系统上定制编译一个2.6版本的, 而且当时编译的时候 , 也是一脸闷逼(别人说啥 做啥)都没有一个体系,对他的理解完全就是0。当时对编译、汇编什么的都没有什么见解,只能按部就班的按照文档来操作,感觉就像个傻子。
所以现在就来自己编译 把里面的问题都来踩一遍
我们其实可以看看官方wiki的编译指导(
https://trac.ffmpeg.org/wiki/CompilationGuide
)——此页面包含一个资源列表,描述从零开始编译ffmpeg所需的必要步骤。
里面有很多平台的编译指导
我们就分平台来试,一个是Windows 一个是linux
我们就先来说linux平台:
我们官网wiki上的指导主要分了两个支路来进行描述,但是大致的过程是一样的(命令不同而已)
其实在这个平台 编译是最简单的了
但是最简单的东西 你要是啥也不懂 那也是一头蒙
在开头 我们需要知道的就是编译 与 汇编
编译器的话 我们需要注意gcc4.2算是比较老了 为了稳妥起见 最好是升级
汇编器 我们也是需要的
然后就是 我们为什么自己编译ffmpeg 无外乎就是让他定制化 让他的功能更加符合我们的要求 这就需要安装必要的组件
所以自己编译ffmpeg的时候 必须先将编译 汇编这两个弄好 再把需要的组件安装好 再来编译ffmpeg
我们需要的组件如果在源里面没有安装包 那就自己编译 还需要让系统找到你安装的目录 之后 我们就需要去了解ffmpeg如何去知道要什么组价了 其实就是之前的configure命令了
我自己在编译3.4.1版本的时候 ./configure --help 将显示输出的信息 做了一个记录(ffmpeg_configure_help)
我之前自己编译出现了一个问题:(自己忘了安装汇编器了)

我们在安装好需要的组件以后就开始编译ffmpeg 其实我们也可以在安装好ffmpeg后 再来升级添加一些其他的组件 在我们的编译指导的页面里也有说明
这样看来 linux平台的ffmpeg编译确实是很简单(对于里边的基本功不太懂的就要去看看了)
我下面就把我自己编译的过程贴一下(我是为了视频解码播放而编译的 里面牵涉到了x264以及SDL)
1.软件环境
操作系统环境:centos7
ffmpeg源码:
github上的master版本
x264源码:
x264-20180201版本
SDL源码:
SDL1.2
Yasm源码:
yasm1.3.0
2.编译与安装
设置环境变量:(可以在/root/.bashrc脚本中设置,重启有效)
export PATH="$PATH:/usr/local/bin:/usr/local/yasm/bin:/usr/local/SDL/bin:/usr/local/x264/bin"
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export C_INCLUDE_PATH="$C_INCLUDE_PATH:/usr/local/SDL/include/SDL:/usr/local/x264/include"
export LD_LIBRARY_PATH="/usr/local/lib:/usr/local/SDL/lib:/usr/local/x264/lib:$LD_LIBRARY_PATH"
2.1 yasm安装
./configure --prefix=/usr/local/yasm
make
make install
2.2 SDL安装
./configure --prefix=/usr/local/SDL
make
make install
2.3 x264安装
./configure --enable-shared --disable-asm --prefix=/usr/local/x264
make
make install
2.4 ffmpeg安装
./configure --enable-shared --disable-static --enable-libx264 --enable-gpl --prefix=/usr/local/ffmpeg-master
make
make install
3.安装好的库lib和头文件路径include
/usr/local/yasm
/usr/local/x264
/usr/local/SDL
/usr/local/ffmpeg-master
4. 补充.几个解码库路径: