这次的目标是完整编译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. SQLServer 跨库查询实现方法

    不使用链接的服务器名,而提供特殊的连接信息,并将其作为四部分对象名的一部分 本文给出一条 SQL 语句用于展示在同一名服务器上,不同的数据库间查询,注意当前连接用户要对两个库都有权限SQL Serve ...

  2. ibus拼音安装_ubuntu10.04

    ubuntu10.04自带的拼音输入发太难用,所以从新安装ibus拼音. sudo apt-get install ibus ibus-pinyin ibus-qt4 ibus-gtk 然后运行 ib ...

  3. linux -- Ubuntu 命令技巧合集

    http://www.nenew.net/UbuntuSkills.html#.E6.9F.A5.E7.9C.8B.E8.BD.AF.E4.BB.B6xxx.E5.AE.89.E8.A3.85.E5. ...

  4. MVC后台与前台交互的问题。。。

    后台: viewbag.sb/*这是一个sb路径*/=@"\gao\shou"; 前台js: var sb='@viewbag.sb'; alert(sb); 结果就是gaocon ...

  5. CentOS7下Tomcat启动慢的原因及解决方案

    现象 在一次CentOS 7系统中安装Tomcat,启动过程很慢,需要几分钟,经过查看日志,发现耗时在这里:是session引起的随机数问题导致的.Tocmat的Session ID是通过SHA1算法 ...

  6. VC++实现编辑框输入提示效果

    编辑框在第一次输入时最好给出一个虚拟的输入提示信息文本,这样的效果更佳友好.,我在编辑框添加灰色提示字(html+VC)一文中简单介绍了一些方法,但是效果欠佳. 原始的编辑框CEdit类没有这样的功能 ...

  7. 《R语言入门》语言及环境简单介绍

    简单介绍 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/diss ...

  8. oracle非归档模式下的冷备份和恢复

    查看归档的相关信息 SQL> archive log list数据库日志模式             非存档模式自动存档             禁用存档终点            USE_DB ...

  9. apache编译安装完成后的服务启动设置

    Apache安装后可通过其安装路径的bin目录下的apachectl脚本控制服务的启动和停止.本例中apache安装在/usr/local/apache-2.2.6,服务控制脚本为: /usr/loc ...

  10. thinkjs——redis

    前言: 后台某些操作的时候会用到缓存:比如用户登录或者校验次数的情景.而本次遇见的状况就是在点击“推送”按钮的时候,需要判断缓存中是否有其值,并将其次数限制为固定值. 过程: 刚听到此需求的时候,首先 ...