ubuntu编译ffmpeg并且demo测试

一、Ubuntu下编译ffmpeg源码指令

下载ffmpeg,解压(跳过),需要安装一些基本的依赖库,如x264等;

切换到ffmpeg源码的目录,config指令

$ ./configure --enable-libx264 --enable-libxvid --enable-libvo-aacenc --disable-yasm --disable-asm --enable-static --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-ffplay --samples=/home/xy/soft/ffout --prefix=/home/xy/soft/ffout

注意:如果需要更多的调试信息,可以加入以下两个配置选项

--enable-debug --disable-optimizations

下一步,编译

make
下一步,安装
sudo make install

安装完成以后,会在指定的目录找到编译结果;路径自定义,由
--prefix=/home/xy/soft/ffout
来指定;

二、调用ffmpeg生成的动态库

编写一个简单的Demo程序

#include <iostream>
using namespace std;

#define __STDC_CONSTANT_MACROS  

extern "C" {
	#include "libavcodec/avcodec.h"
	#include "libavformat/avformat.h"
	#include "libavutil/avutil.h" 
	//#include "libavutil/opt.h"
	//#include "libswscale/swscale.h"
}

int main(int argc, char *argv[])
{
	cout<<"FFmpeg Test!"<<endl;
	
	av_register_all();
	
	return 0;
}
里面只调用了一个ffmpeg函数,av_register_all(),作为演示,已经足够了;该文件命名为FFDemo.cpp

下一步,编译该文件

g++ FFDemo.cpp -o FFDemo -I/home/xy/soft/ffout/include -L/home/xy/soft/ffout/lib -lavformat -lavcodec -lswscale -lswresample -lavutil -lm -lz


其中,-I,表示include头文件的目录,-L,表示LIB的目录,-l是需要链接的库名称

编译以后,在同目录下生成一个FFDemo的可执行文件;

但是折腾还没有解释,你会发现执行它,./FFDemo,会找不到libavformat.so.56等动态库;

需要设置一下动态库路径,:

sudo gedit /etc/ld.so.conf.d/libffmpeg.conf
打开了libffmpeg.conf(这个文件是被新建的),里面加入下面的路径(根据自己的实际情况),在文件中加入动态库的目录,这里是

/home/xy/soft/ffout/lib

最后,可以验证一下,是否可以找到动态库了:

sudo ldconfig -v




posted on 2017-10-12 21:27  zhuxian2009  阅读(569)  评论(0编辑  收藏  举报

导航