雷霄骅 ffmpeg linux编译,ffmpeg centeros 下编译

本文详细介绍了FFmpeg的下载、解压、配置、编译和安装过程,包括在编译时遇到的yasm或nasm未找到的问题以及如何解决。还阐述了动态库的使用,包括将库文件复制到系统路径,以便于编程时的链接。此外,提到了ffplay的使用以及ffmpeg作为格式转换工具的功能。最后,讨论了动态库和静态库的区别,并给出了编程时的示例及编译命令,强调了动态库对于再次开发的重要性。
摘要由CSDN通过智能技术生成

1 下载ffmpeg

6b1f1fc60f6e2b8ba0729f520baef0ce.png

2 解压

tar xvfj ffmpeg-2.6.1.tar.bz2

mv ffmpeg-2.6.1.tar.bz2  ffmpeg

3 配置编译动态库

编译出现 警告:yasm/nasm not found or too old. Use --disable-yasm for a crippled build.

e901b9cfba3863eb4fb39184ea86abf9.png

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

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下。

这里我这样复制了还是不对,-lavcodec -lavutil -lavformat的时候,提示找不到库

然后我把 /usr/local/ffmpeg/lib  所有文件复制到 /usr/local/lib才可以的执行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文件。这在配置的时候很重要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值