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,会找不到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) 编辑 收藏 举报