Windows下MinGW编译ffmpeg库
来源:互联网 发布:videoplayer软件. 编辑:程序博客网 时间:2024/05/07 19:49
主要编译步骤
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左右,如果想要进一步减小库文件可以加上 –disable-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 __cplusplusextern "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”,不然可能会提示Link200无法解析的外部符号问题。
#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
4. 需要注意的是区分开32bit和64bit编译。
5. 链接器工具错误 LNK2026, 模块对于 SAFESEH 映像是不安全的, /SAFESEH 已指定,但某一模块与安全异常处理功能不兼容。 如果要将此模块用于 /SAFESEH,则需要使用 Visual C++ .NET 2003(或更高版本)编译器重新编译该模块。—- 解决办法,项目的”属性页”-> “链接器”->”命令行”, 在其他选项中输入 /SAFESEH:NO ,然后应用确定。
6. 看有些评论讲关掉多线程会降低cpu使用率,测试disable pthreads和disable w32threads后,cpu使用率飙升,目前不清楚原因。
下载库链接:http://download.csdn.net/detail/alger_magic/9669846
0 0
- windows下cygwin/mingw编译ffmpeg库
- Windows下MinGW编译ffmpeg库
- windows下MinGW编译ffmpeg
- windows下使用MinGW+msys编译ffmpeg
- windows下使用MinGW+msys编译ffmpeg
- windows下使用MinGW+msys编译ffmpeg
- mingw+msys windows下ffmpeg 编译
- Windows下利用MinGW编译FFmpeg
- Windows下利用MinGW编译ffmpeg
- [转]Windows下利用MinGW编译FFmpeg
- windows下使用MinGW+msys编译ffmpeg
- Windows下利用MinGW编译FFmpeg
- windows下使用MinGW+msys编译ffmpeg
- Windows下利用MinGW编译FFmpeg
- windows下使用MinGW+msys编译ffmpeg
- windows下使用MinGW+msys编译ffmpeg
- windows下使用MinGW+msys编译ffmpeg
- windows下使用MinGW+msys编译ffmpeg
- 动态链接库的引入
- sonar 整合 maven 基本流程;
- Oracle介绍
- 前端构建工具gulpjs的使用介绍及技巧
- ORACLE DUL 工具使用方法介绍
- Windows下MinGW编译ffmpeg库
- 一文读懂机器学习大数据/自然语言处理/算法全有了【二】
- Python下划线用法
- 关于android studio虚拟机的问题解决
- eclipse没有响应怎么办
- JAVA 数据类型和多种运算符小结
- 请问FXAA、FSAA与MSAA有什么区别?效果和性能上哪个好?
- JVM(JAVA虚拟机)调优及原理
- Jsoncpp的使用方法