1.下载ffmpeg,然后解压到主目录下面,进入这个目录。一直到可以看到有个configure文件为止。



2.下面是使用configure 来生成Makefile文件,具体的配置,可以使用./configure --help来查看相关的内容,其中里面会用到


--prefix=/installpath:表示安装的路径,一般installpath 会是/usr/local/yoursoftwarelocation,一般可以使用/usr/local/ffmpeg,这就说明ffmpeg这个软件安装在/usr/local/ffmpeg这个目录里面。在卸载的时候也很方便,直接删除目录文件就可以了。


--enable-shared是生成动态链接库,相对于静态链接库,具体的内容,去参照网上如何说的动态链接库和静态链接库


3.对于生成的Makefile文件,执行make,这里可能会涉及到权限的问题,可以这么解决sudo make.


同时为了加快编译的速度可以使用make 的一个参数 -j number 表示使用number个线程来进行编译源文件。可以自己设置,一般3-10吧,多了可能会变慢。


4.sudo make install.当make成功之后就是将编译好的库文件以及头文件,相关的文件复制到你所要安装的路径当中。


5.到了make install 成功之后你就可以在你要安装的路径里面看到已经有文件了。


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


6.如果你已经安装好了上面的内容。下面就到了如何在自己的程序中使用ffmpeg。找到一个源文件,关于ffmpeg的啊啊,我们假设这个文件为main.c。然后就编译.


gcc main.c -o main - I /usr/local/ffmpeg/include -L /usr/local/ffmpeg/lib -lavcodec -lavformat -lavutil -lavdevice



-I /path:表示在这个path下面搜索头文件


-L /path 表示在这个path下面搜索头库文件


-lavcodec 表示链接这个libavcode.so这个动态链接库



编译可能会成功,下面是运行。


这里还要提到动态链接库的概念,你在编译的时候告诉他到哪里找头文件和动态链接库,但是运行的时候需要把这些库加载到内存中才可以。


但是呢,谁来负责加载这个动态库呢,不是gcc,而是ldconfig,这个命令,会读取/etc/ld.so.conf这个文件,按着这个文件里面的路径来加载动态链接库,然后再按这系统PATH加载其他的链接库。打开这个文件,里面添加,你的程序动态链接库所在的位置。可以使用root权限来编辑这个软件。在我们这个例子中,软件安装在/usr/local/ffmepg当中,动态链接库放在/usr/local/ffmpeg/lib当中。所以在/etc/ld.so.conf添加一行:/usr/local/ffmpeg/lib。然后运行ldconfig命令在加载动态库。



期间可能还会遇到其他的问题,比如,把文件名改为main.cpp你就不能编译通过。估计是c和c++动态链接库不一样吧。


ps:这个过程当中需要了解下gcc 编译语法,动态链接的概念,可以参考操作系统教程。还有linux如何安装软件。


遇到问题在上网搜索下。就这么多。其他的方法,比如把动态链接库复制到系统默认的库下面/lib下面,也可以,只要gcc能找到,并且在运行的时候动态链接库加载程序能够找到具体的动态链接库就可以。