本文转载自:http://www.linuxidc.com/Linux/2013-06/85628.htm

详细说下在Linux下FFmpeg的安装编译过程。参考 Ubuntu 10.04安装编译FFmpeg【图】 http://www.linuxidc.com/Linux/2013-04/83111.htm

  1、下载ffmpeg。

      官方网站下载 http://ffmpeg.org/download.html

  2、解压

    tar命令解压

  3、配置

  ./configure --enable-shared --prefix=/usr/local/ffmpeg

  其中:--enable-shared 是允许其编译产生动态库,在以后的编程中要用到这个几个动态库。--prefix设置的安装目录。

  4、编译并安装

  make

  make install

  5、安装之后在/usr/local/ffmpeg会看到有三个目录

  lib 动态链接库位置

  include 编程要用到头文件

  bin 执行文件所在的目录

  6、为了以后方便编程,我们把lib中的三个链接库libavcodec.so libavformat.so libavutil.so复制到/usr/lib下。把include目录下的ffmpeg目录复制到/usr/include下。

  执行bin目录下的ffplay,可以去播放音频或者视频文件。例如播放1.mp3

  ./ffplay 1.mp3

  另外,bin目录下还有两个文件:ffmpeg和ffserver

  ffmpeg是一个很好的视频和音频的格式转化工具。网上有很多它的说明文档。如果不想生成ffserver,只要在./configure的时候加--disable-ffserver即可。

  7、编程

  如果写了一个test.c文件,要包含ffmpeg的头文件,可以这样写:

  #include

  编译:gcc -o test test.c -lavformat -lavcodec -lavtuil (前提是有第6步的操作)

  如果没有第6部的操作,则编译的时候如下:

  gcc -o test test.c -I/usr/local/ffmpeg/include -L/usr/local/ffmpeg/lib -lavformat -lavcodec -lavtuil

  编译成功之后,执行的时候还是需要动态库的支持,还是要把那三个动态库文件复制到/usr/lib或者/lib中,不然执行的时候会说找不到动态库链接。还有一个方法可以解决这个问题,就是把/usr/local/ffmpeg/lib这个目录加入到/etc/ld.so.config中,然后执行ldconfig,或者重启电脑,这样执行的时候系统就可以从/usr/local/ffmpeg/lib这个目录下去找这三个动态库文件了。

  以上的方式是采用动态库编译ffmpeg的,如果在configure的时候不加上--enable-shared的,则采用静态链接的方式,不会生成那三个动态库。同时生成的ffplay、ffmpeg的执行文件也比较的大,因为他们不需要动态库的支持,就可以执行。但是不利于再次开发,所以我采用动态链接的方式。configure中还有很多的选项,可以通过./configure --help查看,也可以直接查看configure文件。这在配置的时候很重要。

最新文章

  1. 谈谈React那些小事
  2. iOS 沙盒(sandbox)机制和文件操作
  3. Postfix之telnet测试
  4. 理解asp.net中DropDownList编辑数据源,绑定数据库数据。
  5. java与.net比较学习系列(3) 基本数据类型和类型转换
  6. [连载]JavaScript讲义(02)--- JavaScript核心编程
  7. win7+Powerpoint2007下设置演讲者视图,两步搞定
  8. java设计模式之六适配器模式(Adapter)
  9. Pointers to classes (From the note of my firend)
  10. 基于libUSB的USB设备固件更新程序(下载数据)(转)
  11. Arrays工具类十大常用方法
  12. Python应用场景
  13. 自制STP配置实验
  14. sublime学习笔记
  15. Sqlite 梳理
  16. Linux时间子系统之(六):POSIX timer
  17. Nginx详解二十九:基于Nginx的中间件架构设计
  18. PHP的session的实现机制
  19. 编译spark-0.9.1
  20. ES6基础三(对象)

热门文章

  1. codeforces 708ALetter Cyclic Shift
  2. HDU1412 {A} + {B}
  3. springboot与mybatis集成
  4. Eigen3
  5. Dapper中数据表的字段(列)与实体属性不一致时,如何手动配置它们之间的映射?
  6. RAP、Mock.js、Vue.js、Webpack
  7. 如何参加topcoder
  8. mysql和eclipse连接jdbc驱动配置
  9. Fiddler-AutoResponder 修改接口数据
  10. 基于连接的Java网络编程