MinGW下编译ffmpeg静态库给Visual C++使用

首先推荐 http://ffmpeg.zeranoe.com/builds/, 这里已经有编译好的动态连接库。可惜上面没静态链接库。我也试过 DLL2Lib, 但是无法连接LIBCMT库,只能使用MSVCRT

所以一定要静态库的话只能自己编译了。在Windows上用MinGW编译真是个痛苦的过程,没有yum install和apt-get,所有的依赖项要自己找全。

废话少说,下面是编译过程,记录于此。


本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

  1.   

准备

首先 下载安装 MinGW, 比较赞的是,现在它提供自动化的安装配置程序,相比以前大大简化了安装过程,连fstab都帮你配置了。

安装完成后编辑 MinGW\msys\1.0\msys.bat 批处理, 在文件最前面加入一行,调用 Visual Studio的 vcvarsall.bat 批处理设置环境变量

  1. call  "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"  

本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

接着在MinGW的下载站点上 下载安装 g++,我下载的版本是4.6.2,覆盖到MinGW目录即可.

http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.6.2-1/gcc-c%2B%2B-4.6.2-1-mingw32-bin.tar.lzma/download


然后下载  yasm Win32 版本,将文件重命名并分别复制2份到  MinGW\bin\yasm.exe 和  MinGW\bin\nasm.exe , 后面很多编译的项目依赖于它们.

执行msys.bat, 在命令行窗口中切换到打算编译的目录。比如我的在L盘, 则使用 cd /L/ 进入, 其它文件命令与Linux一致。

准备活动到此结束,下面就开始漫长的编译过程了。

本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

编译依赖项(下面的版本号是我编译的时候的版本号,不一定必须是这个版本号)

1. Zlib 1.2.7

下载源代码 http://zlib.net/ 解压后:

  1. cd zlib-1.2.7/  
  2. make -f win32/Makefile.gcc  
  3. cp -iv zlib1.dll /mingw/bin  
  4. cp -iv zconf.h zlib.h /mingw/include  
  5. cp -iv libz.a /mingw/lib  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164
2. libgsm 1.0.13-3

下载源代码, http://libgsm.sourcearchive.com/, 解压后:

  1. cd gsm/  
  2. make  

编译到一半的时候出现 fchmod 和 fchown 的编译错误,不管它,继续执行:

  1. mkdir /mingw/include/gsm  
  2. cp inc/gsm.h /mingw/include/gsm  
  3. cp lib/libgsm.a /mingw/lib  

本文地址: http://blog.csdn.net/wangjia184/article/details/7931164
3. LAME 3.99.5

下载源代码, http://sourceforge.net/projects/lame/files/lame/, 解压后:

  1. ./configure --prefix=/mingw --enable-expopt=full  
  2. make  
  3. make install  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164
4. LIB OGG 1.3.0

下载源代码,http://xiph.org/downloads/,解压后:

  1. ./configure --prefix=/mingw  
  2. make  
  3. make install  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

5. LIBVorbis 1.3.3

下载源代码,http://xiph.org/downloads/,解压后:

  1. ./configure --prefix=/mingw  
  2. make  
  3. make install  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

6. LIBSpeex 1.2rc1

下载源代码,http://xiph.org/downloads/,解压后:

  1. ./configure --prefix=/mingw  
  2. make  
  3. make install  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

7. LIBTheora 1.1.1

下载源代码,http://xiph.org/downloads/,解压后:

  1. ./configure --prefix=/mingw  
  2. make  
  3. make install  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

8. FAAC 1.2.8

下载源代码,http://www.audiocoding.com/downloads.html,解压后:

首先编辑 Makefile.am 文件,将第一行 改为 

SUBDIRS = include libfaac

然后修改configure.in文件, 找到最后一段的 AC_OUTPUT, 修改为

AC_OUTPUT(libfaac/Makefile include/Makefile Makefile)

执行:

  1. ./configure --prefix=/mingw  
  2. make  
  3. make install  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

9. xvidcore 1.3.2

下载源代码,http://www.xvid.org,解压后:

  1. cd xvidcore/build/generic  
  2. ./configure --prefix=/mingw  

执行到这里后,搜索 xvidcore/build/generic 目录下面所有文件中的  -mno-cygwin 这个选项, 这个选项已经不被GCC支持,全部删除后继续。
  1. make  
  2. make install  
  3. cp -iv \=build/xvidcore.dll.a /mingw/lib/libxvidcore.dll.a  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

10. x264 snapshot-20120830-2245

下载源代码,http://www.videolan.org/developers/x264.html,解压后:

  1. configure --prefix=/mingw --enable-win32thread --extra-cflags="-DX264_VERSION=20100422"  
  2. make  
  3. make install  
  4. cp -iv x264.h x264_config.h /mingw/include  
  5. cp -iv libx264.a /mingw/lib  
  6. cp -iv x264.pc /mingw/lib/pkgconfig  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

编译ffmpeg 0.11.1

相信有耐心进行到这里的人,已经花了1-2个小时了,这是正常的速度。终于可以编译ffmpeg了.

下载源代码, http://ffmpeg.org ,解压后首先配置,光这个自动配置过程也要十分钟左右。

  1. ./configure --prefix=/mingw --enable-gpl --enable-nonfree --enable-postproc --enable-avfilter --enable-w32threads --enable-runtime-cpudetect --enable-memalign-hack --enable-bzlib --enable-libfaac --enable-libgsm --enable-libmp3lame --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-zlib --disable-debug  

然后 make & make install 等着编译结束吧。 本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

链接

链接静态库需要注意链接的顺序, 我的VC版本是VS2010
  1. #ifdef __cplusplus  
  2. extern "C" {  
  3. #endif  
  4.   
  5. #include <libavcodec/avcodec.h>  
  6. #include <libavformat/avformat.h>  
  7. #include <libavutil/avutil.h>  
  8. #include <libswscale/swscale.h>  
  9.   
  10. #ifdef __cplusplus  
  11. }  
  12. #endif  
  13. #pragma comment( lib, "libgcc.a")  
  14. #pragma comment( lib, "libmingwex.a")  
  15. #pragma comment( lib, "libcoldname.a")  
  16. #pragma comment( lib, "libavcodec.a")  
  17. #pragma comment( lib, "libavformat.a")  
  18. #pragma comment( lib, "libavutil.a")  
  19. #pragma comment( lib, "libswscale.a")  
  20. #pragma comment( lib, "libz.a")  
  21. #pragma comment( lib, "libfaac.a")  
  22. #pragma comment( lib, "libgsm.a")  
  23. #pragma comment( lib, "libmp3lame.a")  
  24. #pragma comment( lib, "libogg.a")  
  25. #pragma comment( lib, "libspeex.a")  
  26. #pragma comment( lib, "libtheora.a")  
  27. #pragma comment( lib, "libvorbis.a")  
  28. #pragma comment( lib, "libvorbisenc.a")  
  29. #pragma comment( lib, "libx264.a")  
  30. #pragma comment( lib, "xvidcore.a")  
  31. #pragma comment( lib, "wsock32.lib")  
  32. #pragma comment( lib, "vfw32.lib") 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450759.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

元模型是什么

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 元模型 元模型&#xff0c;是特定领域的模型&#xff0c;用于创建该领域中的模型的构建元素。典型的元模型结构可以分为四种&#xff1a;…

使用 NodeJS+Express+MySQL 实现简单的增删改查

关于node.js暂时记录如下&#xff0c;以后有时间一定学习 文章来自简书&#xff0c;作者&#xff1a;sprint&#xff0c;2016-07 使用 Node.js ExpressMySQL 实现简单的增删改查 https://www.jianshu.com/p/0a161f341771 使用 Node.js Express 开发服务端 https://www.jiansh…

zabbix安装过程

安装了两天&#xff0c;zabbix监控服务器终于搭建好了。搭建过程中遇到过很多问题&#xff0c;都逐一解决了&#xff0c;好在有强大的网络搜索&#xff0c;和网络上牛人的优秀博客&#xff0c;让我能够不断的解决问题。之前在虚拟机上装过&#xff0c;觉得应该很简单&#xff0…

Spring Data JPA入门

见&#xff1a;http://sishuok.com/forum/blogPost/list/7000.html Spring Data是什么 Spring Data是一个用于简化数据库访问&#xff0c;并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷&#xff0c;并支持map-reduce框架和云计算数据服务。 Spring Data…

划分用户故事(user-story)的原则

在敏捷开发过程中是通过用户故事来将需求具体化成可以进行迭代开发的一个个现实的可见的开发任务。因此在敏捷软件的开发过程中&#xff0c;用户故事的划分对于迭代和开发起着举足轻重的作用。 用户故事从其名字来看是站在用户的角度所描述的故事&#xff0c;同时也是用户所能看…

【git】----- clone 及上传文件

在GitHub上创建一个项目首先点击新存储库进入创建的步骤创建完成后跳转到下一个页面复制路径然后在自己的新建的文件夹里面&#xff08;例如:git&#xff09;右键&#xff0c;点击Git Bash Here进入命令行输入 git clone 输入刚刚拷贝的路径&#xff08;https://github.com/nam…

数据结构与算法总结

文章目录线性数据结构1. 数组2. 链表2.1. 链表简介2.2. 链表分类2.2.1. 单链表2.2.2. 循环链表2.2.3. 双向链表2.2.4. 双向循环链表2.3. 应用场景2.4. 数组 vs 链表3. 栈3.1. 栈简介3.2. 栈的常见应用常见应用场景3.2.1. 实现浏览器的回退和前进功能3.2.2. 检查符号是否成对出现…

使用 Spring Data JPA 简化 JPA 开发

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 从一个简单的 JPA 示例开始 本文主要讲述 Spring Data JPA&#xff0c;但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线&am…

JS 取整、取余

一、取整 1. 取整 // 丢弃小数部分,保留整数部分 parseInt(7/2)  // 3 2. 向上取整 // 向上取整,有小数就整数部分加1 Math.ceil(7/2)  // 4 3. 向下取整 // 向下取整,丢弃小数部分 Math.floor(7/2)  // 3 4. 四舍五入 // 四舍五入 Math.round(7/2)  // 3 二、取余 // …

中国历史朝代及皇帝简介

一 、原始社会&#xff08;约170万年前到约公元前21世纪&#xff09;  [详细]约170万年前 元谋人生活在云南元谋一带       查看元谋人>>约70-20万年前北京人生活在北京周口店一带      查看北京人>>约1.8万年前山顶洞人开始氏族公社的生活      …

Hadoop基础-Hdfs各个组件的运行原理介绍

Hadoop基础-Hdfs各个组件的运行原理介绍 作者&#xff1a;尹正杰 版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。 一.NameNode工作原理&#xff08;默认端口号&#xff1a;50070&#xff09; 1>.什么是NameNode NameNode管理文件系统的…

JPA入门例子(采用JPA的hibernate实现版本)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 &#xff08;1&#xff09;、JPA介绍&#xff1a; JPA全称为Java Persistence API &#xff0c;Java持久化API是Sun公司在Java EE 5规范…

IDEA详细配置与使用

文章目录一、IntelliJ IDEA 介绍二、查看安装目录结构三、查看设置目录结构3.1 config目录3.2 system目录四、设置显示常见的视图1.工程界面展示2.如何删除模块3.查看项目配置五、常用配置1.Appearance & Behavior2. Editor - General3. Editor – Font4. Editor – Color …

M1905

11.09 11&#xff1a;00------102万                          11.09 14:00---103万 11.12 16:00------103万                          11.19 16:00---94万 11.20 16:00----94.9万          …

前端又要失失失失失失失失失业了!

1. 祸起 看到标题&#xff0c;切图仔们又是菊花一紧。前几天微软刚刚开源Sketch2Code&#xff0c;让UI草图转化成HTML代码。切图仔瑟瑟发抖。 还没等切图仔调整好心情&#xff0c;号称H5代码生成工具的H5DS也开源了最新的代码。 尼玛&#xff0c;H5代码都可以一键生成了&#x…

我是如何对研发和测试人员进行量化的绩效考核的

我把硬件开发、软件开发和测试人员的绩效考核分成3部分&#xff0c;即重点工作、绩效改进和绩效浮动。下面分别进行说明它们的量化方法。1. 重点工作的绩效量化方法重点工作的量化标准应从数量&#xff08;包括文档&#xff09;、时间、质量和难度系数等多个维度来评定。…

常见cmd命令,开发人员必备

运行程序 notepad--------打开记事本calc-----------启动计算器regedit.exe-------注册表write----------写字板mmc------------打开控制台iexpress-------木马捆绑工具&#xff0c;系统自带fsmgmt.msc-----共享文件夹管理器osk------------打开屏幕键盘certmgr.msc----证书管理…

IDEA常用快捷键【win-mac对比】

文章目录Mac 键盘符号说明CtrlAltShiftCtrl AltCtrl ShiftAlt ShiftCtrl Shift Alt其他Mac 键盘符号说明 ⌘ Command⇧ Shift⇪ Caps Lock⌥ Option⌃ Control↩ Return/Enter⌫ Delete⌦ 向前删除键&#xff08;FnDelete&#xff09;↑ 上箭头↓ 下箭头← 左…

SpringBoot 之环境搭建

见: http://bbs.itmayiedu.com/article/1491835651684 1. 什么是**SpringBoot&#xff1f;** Spring Boot 是由 Pivotal 团队提供的全新框架&#xff0c;其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人…

十五、类与封装的概念

1、类的封装 C中类的封装&#xff1a; 成员变量&#xff1a;C中用于表示类属性的变量成员函数&#xff1a;C中用于表示类行为的函数 C中可以给成员变量和成员函数定义访问级别 public&#xff1a;成员变量和成员函数可以在类的內部和外界访问和调用 private&#xff1a;成员变量…