主要编译步骤
1. 安装MinGW,推荐使用官网下载安装,然后设定默认路径,continue键进入包安装界面,未安装前所有方框标记都是空的,右键选择“mark for installation”即可(安装包并不都得安装,全装也没什么大碍,多花点时间安装而已。选择好安装包后点击菜单项Installation,选择子项Applie changes进行安装)。
2. 测试MinGW,添加一用户环境变量,变量名为PATH,变量值为安装路径\MinGW\bin。重启电脑在命令终端输入gcc –version,如果返回正确说明环境配置已经配置成功。
3. 从yasm官网下载yasm, 如yasm-1.2.0-win32.exe, 重命名为yasm.exe 放到 安装目录\MinGW\bin目录下。 http://yasm.tortall.net/Download.html
4. 下载ffmpeg源码,解压后放到MinGW的安装目录/msys/1.0/home/用户名,文件夹下。
5. 运行安装目录/msys/1.0/msys.bat,弹出的控制台默认路径是放ffmpeg的源码路径。
6. 执行./configure –enable-shared –enable-static –enable-memalign-hack –prefix=/installdir 该步骤会消耗一些时间,一般不会出问题,没问题的话会正常配置完成。
7. make, make install. 成功后会生成对应的头文件和库文件,大功告成。
**
8. TODO – 尝试disable一些功能简化后的配置命令。
Try 1(avcodec可以从11M 减小到2.5M左右,如果想要进一步减小库文件可以加上 –enable-small,不过这个会影响到解码性能,如需要h265的编码需要加上–enables-libx265,h265解码是–enable-decoder=hevc):
动态库
./configure --disable-static --enable-shared --enable-memalign-hack --disable-debug --disable-network --disable-muxers --disable-ffserver --disable-ffplay --disable-filters --disable-devices --disable-protocols --disable-demuxers --disable-muxers --disable-encoders --disable-decoders --disable-parsers --disable-bsfs --enable-decoder=h264 --disable-avfilter --disable-swresample --disable-zlib --disable-bzlib --disable-ffmpeg --disable-hwaccels --disable-avdevice --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-mipsfpu --disable-mipsdsp --disable-audiotoolbox --disable-vda --disable-securetransport --disable-sdl --disable-xlib --disable-mipsdspr2 --disable-gpl --prefix=/home/output
静态库
./configure --enable-static --disable-shared --enable-memalign-hack --disable-debug --disable-network --disable-muxers --disable-ffserver --disable-ffplay --disable-filters --disable-devices --disable-protocols --disable-demuxers --disable-muxers--disable-encoders --disable-decoders --disable-parsers --disable-bsfs --enable-decoder=h264 --disable-avfilter --disable-swresample --disable-zlib --disable-bzlib --disable-ffmpeg --disable-hwaccels --disable-avdevice --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-mipsfpu --disable-mipsdsp --disable-audiotoolbox --disable-vda --disable-securetransport --disable-sdl --disable-xlib --disable-mipsdspr2 --disable-gpl --prefix=/home/output1
静态库的使用说明: 使用生成的.a库,以上面静态库为例。
#ifdef __cplusplus
extern "C" {
endif
#include "ff_include/libavformat/avformat.h"
#include "ff_include/libavcodec/avcodec.h"
#include "ff_include/libavutil/avutil.h"
#include "ff_include/libswscale/swscale.h"
#pragma comment(lib,"ff_lib/libavformat.a")
#pragma comment(lib,"ff_lib/libavutil.a")
#pragma comment(lib,"ff_lib/libswscale.a")
#pragma comment(lib,"ff_lib/libavcodec.a")
//以下库是必须也要加载的(静态库才需要下面的*.a文件),在/MinGW/lib文件夹下拷贝出来
#pragma comment( lib, "ff_lib/libgcc.a")
#pragma comment( lib, "ff_lib/libmingwex.a")
#pragma comment( lib, "ff_lib/libcoldname.a")
#pragma comment( lib, "ff_lib/libmsvcrt.a")
#pragma comment( lib, "ff_lib/libiconv.a")
#ifdef __cplusplus
}
#endif
注意事项
ps:
1. MinGW的安装比较关键。
2. 有的教程有这步,修改启动MinGW终端脚本文本方式打开msys.bat,在第一行加上call “C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\vcvars32.bat” 实测不加也可以。
3. 使用的时候需要加入extern “C”,不然可能会提示Link2001无法解析的外部符号问题。
#ifdef __cplusplus
extern "C" {
#endif "
#include "ffmpeg_include/libavformat/avformat.h"
#include "ffmpeg_include/libavcodec/avcodec.h"
#include "ffmpeg_include/libavutil/avutil.h"
#pragma comment(lib,"ffmpeg_lib/avformat.lib")
#pragma comment(lib,"ffmpeg_lib/avdevice.lib")
#pragma comment(lib,"ffmpeg_lib/avfilter.lib")
#pragma comment(lib,"ffmpeg_lib/avutil.lib")
#pragma comment(lib,"ffmpeg_lib/swresample.lib")
#pragma comment(lib,"ffmpeg_lib/swscale.lib")
#pragma comment(lib,"ffmpeg_lib/avcodec.lib")
#ifdef __cplusplus
}
#endif