这次的目标是完整编译FFmpeg包括汇编代码,并且尽量少修改源代码。

环境是WIN7 64位,VS2012, Intel.Parallel.Studio.XE.2013.SP1

一. 安装MinGW,并编译FFmpeg, 这个网上教程有的是,没难度。编译以后的ffplay可以在MinGW的命令行下播放视频文件,但在Windows里还不行,估计还要设一些PATH变量啥的,没搞。我发现在MinGW设环境变量很容易,直接敲export PATH="$PATH:XXXX"就会保存,下次再运行就不要再设了。另外就是make install时安装的目录经常不是你指定的目录,要人工确认一下install到哪去了。

二. VS2012集成yasm,按照yasm官网上与VS2010集成的方法做就行,完全一样。需要注意的是,yasm要单独设定include path和宏(工程属性页里有)。宏在"defined symbols"里设置,格式就像:ARCH=X86;VC=1 这样写就行。

三. if (XXXX) do_xxxx;的问题。这是个关键问题,以前经常会卡在这,如果要修改代码那工作量就大了。其实VS里也可以处理这种被禁掉的代码,就是需要打开优化开关,我设了O1,同时一定注意,要关掉RTC(Runtime Check),否则优化设置不起作用,位置在C/C++ -> Code Generation -> Basic Runtime Checks, 设为Default就是关掉了。这样所有模块就都由config.h控制了,代码不用改。

四. ICC与GCC的兼容性。应该说,Intel编译器最近一直在提高与GCC的兼容能力,到目前只剩下MMX, SSE这些指令的内联汇编还不能兼容。遇到这样的文件,我的办法是把MinGW里已经编译好的.o文件拿过来,打成一个静态库(.a文件),然后在VS里链接就行了,可以直接用,不用转换成.lib文件。打包在MinGW里用ar命令完成,比如我用的是

$ ar -r avcodec_x86.a cavsdsp.o dsputil_mmx.o dsputil_x86.o idct_sse2_xvid.o ml
pdsp.o motion_est.o mpegvideoenc.o simple_idct.o snowdsp.o vc1dsp_mmx.o vp9dsp_init.o ac3dsp_init.o

还要链接libgcc.a文件(在MinGW安装目录里搜一下)。

五. 还有一个注意事项,同一个工程里的源文件不能重名,比如x86目录下很多asm文件和c文件重名,都要改掉,否则链接会出问题。

解决了以上问题应该就可以了,没谈到的问题基本网上都有解决方法,搜一搜,肯定能搞定!

VS2012编译FFmpeg 2.1.4的更多相关文章

  1. vs2012编译ffmpeg

    从官方网站down下来的ffmpeg没有pdb文件不方便调试,为此使用VS2012编译ffmpeg. 编译步骤: 一.安装MinGW,具体的安装方法上一篇文章已经有介绍这里不在赘述. 二.下载文件并放 ...

  2. Windows 系统 vs2012 MinGW 编译ffmpeg 静态库

    Windows系统下 vs2012编译ffmpeg 动态库 前面已经有文章讲述,本文将讲述如果编译生成ffmpeg静态库以方便 在vs2012下调用. 准备工作:安装MinGW环境,修改ffmpeg配 ...

  3. vs2012 MinGW编译ffmpeg 出现libavdevice/avdevice.c(38) : error C2059: 语法错误:“.”

    利用vs2012编译ffmpeg出现以下错误: libavdevice/avdevice.c(38) : error C2059: 语法错误:“.” libavdevice/avdevice.c(40 ...

  4. Windows下使用Visual Studio 2010编译ffmpeg全过程

    在visual studio 2010中调用ffmpeg http://blog.sina.com.cn/s/blog_4178f4bf01018wqh.html Windows下使用Visual S ...

  5. vs2015编译ffmpeg 出现错误rtmp.lib(rtmp.obj) : error LNK2001: 无法解析的外部符号 ___iob_func

    vs2015编译ffmpeg(版本3.0.2)引用外部库文件librtmp出现以下错误: rtmp.lib(rtmp.obj) : error LNK2001: 无法解析的外部符号 __imp__st ...

  6. Windows下使用Visual Studio 2010 编译ffmpeg全过程

    (注意:请务必先阅读:七,后记补充:) ffmpeg是一个开源的多媒体库,使用非常广泛. 在linux下编译ffmpeg非常简单,而在windows下编译就不是那么容易了.一般在windows下使用M ...

  7. windows下用vs2010编译ffmpeg

    转载自;http://q1q2q3q4q5q6ln.blog.163.com/blog/static/500794332014666536283/ (注意:请务必先阅读:七,后记补充:) ffmpeg ...

  8. 【FFMPEG】Windows下使用Visual Studio 2010编译ffmpeg全过程

    原文  http://www.cnblogs.com/xylc/p/3683203.html 主题 FFmpegWindowsVisual Studio ffmpeg是一个开源的多媒体库,使用非常广泛 ...

  9. iOS编译FFmpeg、kxmovie实现视频播放 (转载)

    由于FFmpeg开源框架的功能非常强大,可以播放的视频种类很多,同时添加第三方库kxmovie,实现视频播放,真的是爽爆了,因此今天来说一下关于FFmpeg在iOS手机上的一些配置过程,配置工具,还有 ...

随机推荐

  1. C++/C语言的标准库函数与运算符的区别new/delete malloc/free

    malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符.它们都可用于申请动态内存和释放内存.下面来看他们的区别. 一.操作对象有所不同 malloc与free是C++ ...

  2. snmp trap编写

    1.MIB库查看net-snmp的安装目录./usr/share/snmp/mibs目录下: NET-SNMP-EXAMPLES-MIB.mib本件部分内容如下: netSnmpExampleHear ...

  3. 第三百一十九节,Django框架,文件上传

    第三百一十九节,Django框架,文件上传 1.自定义上传[推荐] 请求对象.FILES.get()获取上传文件的对象上传对象.name获取上传文件名称上传对象.chunks()获取上传数据包,字节码 ...

  4. 【转载】WebApi 接口测试工具:WebApiTestClient

    正文 前言:这两天在整WebApi的服务,由于调用方是Android客户端,Android开发人员也不懂C#语法,API里面的接口也不能直接给他们看,没办法,只有整个详细一点的文档呗.由于接口个数有点 ...

  5. 常用CSS缩写语法总结(转)

    使用缩写可以帮助减少你CSS文件的大小,更加容易阅读.css缩写的主要规则如下: 颜色 16进制的色彩值,如果每两位的值相同,可以缩写一半,例如:#000000可以缩写为#000;#336699可以缩 ...

  6. (记录)eclipse常用设置步骤

    代码风格文件导入: https://blog.csdn.net/wangming520liwei/article/details/53911736 注释中的author修改: https://jing ...

  7. jquery的委托处理

     1.基本用法: javascript的事件模型,采用”冒泡”模式,也就是说,子元素的事件会逐级向上”冒泡”,成为父元素的事件. 利用这一点,可以大大简化事件的绑定.比如,有一个表格(table元素) ...

  8. 【View】之【SimplePillarsView】可多色可圆角柱状图【demo】

    当前版本:SimplePillarsView_v1.0.20140613 直接看效果图. 下附图片的设置方法:myview.setPillars(15, 0xffff00ff, 15, 5); 下附图 ...

  9. Fast-RCNN

    后面框架回归和分类都放到了神经网络里 测试速度提升100倍 训练10

  10. SQLServer------插入数据时出现IDENTITY_INSERT错误

    详细错误信息: 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'Student' 中的标识列插入显式值. 原因: 表中存在某个字段是自动增长的标识符 解决方法: set IDENT ...