一、在linux上编译ffmpeg
下载文件到/home/wyq/,
1、cd /home/wyq/ffmpeg 切换到当前目录;
2、./configure --disable-yasm --enable-shared --prefix=/home/wyq/ffmpeg 生成config.h等文件,生成动态库;
其中,--enable-shared 是允许其编译产生动态库,在以后的编程中要用到这个几个动态库。--prefix设置的安装目录。若要生成静态库,换为--enable -static。
3、make 运行
4、make install 安装,生成各种.a,.so,.h文件
这时会在ffmpeg中生成lib、include、bin文件夹,lib文件夹中都是生成的.a,.so的库文件,include中是各种编译要用的.h文件,bin中是执行文件所在的目录。
为了以后编译方便,将lib中的三个链接库libavcodec.so libavformat.so libavutil.so复制到/usr/lib下,把include目录下的ffmpeg目录复制到/usr/include下。
二、试运行
在/home/wyq/下,新建一个simulation文件夹,和ffmpeg平级,下面再新建src, include, out, obj这四个目录,并把tutorial01.c和一个测试视频test.mp4放在src目录下。
1、切换到src目录下,输入gcc -g -o tutorial01 tutorial01.c -lavutil -lavformat -lavcodec -lz -lavutil -lswscale -lpthread -lm -I../ffmpeg
编译报错: /usr/bin/ld:can not find -lz ;解决办法:输入sudo apt-get install zliblg-dev。但是当时我的第一反应是去掉-lz,编译后也成功了。
至于-lpthread我不知道这个是干什么的,也去掉了。
编译报错: can not find libavutil.so等等 ,这些都是由于没有将生成的库文件放入/usr/lib下,放入后即可。
注意:/usr/lib需要系统权限,输入su即可。复制命令:cp 原文件的路径 要放入的目录;若要把一个文件夹的全部内容放入另一个文件中,在cp后加-r。
2、输入./tutorial01 test.mp4,会输出一系列RGB图片,成功。