VS2012编译FFmpeg 2.1.4
这次的目标是完整编译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的更多相关文章
- vs2012编译ffmpeg
从官方网站down下来的ffmpeg没有pdb文件不方便调试,为此使用VS2012编译ffmpeg. 编译步骤: 一.安装MinGW,具体的安装方法上一篇文章已经有介绍这里不在赘述. 二.下载文件并放 ...
- Windows 系统 vs2012 MinGW 编译ffmpeg 静态库
Windows系统下 vs2012编译ffmpeg 动态库 前面已经有文章讲述,本文将讲述如果编译生成ffmpeg静态库以方便 在vs2012下调用. 准备工作:安装MinGW环境,修改ffmpeg配 ...
- vs2012 MinGW编译ffmpeg 出现libavdevice/avdevice.c(38) : error C2059: 语法错误:“.”
利用vs2012编译ffmpeg出现以下错误: libavdevice/avdevice.c(38) : error C2059: 语法错误:“.” libavdevice/avdevice.c(40 ...
- Windows下使用Visual Studio 2010编译ffmpeg全过程
在visual studio 2010中调用ffmpeg http://blog.sina.com.cn/s/blog_4178f4bf01018wqh.html Windows下使用Visual S ...
- vs2015编译ffmpeg 出现错误rtmp.lib(rtmp.obj) : error LNK2001: 无法解析的外部符号 ___iob_func
vs2015编译ffmpeg(版本3.0.2)引用外部库文件librtmp出现以下错误: rtmp.lib(rtmp.obj) : error LNK2001: 无法解析的外部符号 __imp__st ...
- Windows下使用Visual Studio 2010 编译ffmpeg全过程
(注意:请务必先阅读:七,后记补充:) ffmpeg是一个开源的多媒体库,使用非常广泛. 在linux下编译ffmpeg非常简单,而在windows下编译就不是那么容易了.一般在windows下使用M ...
- windows下用vs2010编译ffmpeg
转载自;http://q1q2q3q4q5q6ln.blog.163.com/blog/static/500794332014666536283/ (注意:请务必先阅读:七,后记补充:) ffmpeg ...
- 【FFMPEG】Windows下使用Visual Studio 2010编译ffmpeg全过程
原文 http://www.cnblogs.com/xylc/p/3683203.html 主题 FFmpegWindowsVisual Studio ffmpeg是一个开源的多媒体库,使用非常广泛 ...
- iOS编译FFmpeg、kxmovie实现视频播放 (转载)
由于FFmpeg开源框架的功能非常强大,可以播放的视频种类很多,同时添加第三方库kxmovie,实现视频播放,真的是爽爆了,因此今天来说一下关于FFmpeg在iOS手机上的一些配置过程,配置工具,还有 ...
随机推荐
- HBase在搜狐内容推荐引擎系统中的应用
转自:http://www.aboutyun.com/thread-7297-1-1.html Facebook放弃Cassandra之后,对HBase 0.89版本进行了大量稳定性优化,使它真正成为 ...
- 各个层次的gcc警告
http://blog.csdn.net/lizzywu/article/details/9419145 各个层次的gcc警告从上到下覆盖 变量(代码)级:指定某个变量警告 int a __attri ...
- JMeter使用记录2 -- Web測试
Web測试用例 新建线程组.配置起3线程,循环1次.1秒启动全部线程.进行login.循环1个主要页面的读写,并对另外一个主要页面进行读操作,最后logout并在aggregate graph/gra ...
- console.log()注意事项。
console.log常因不明原因在IE9出现SCRIPT5009: 'console' is undefined (console未被定义) 错误! IE9说console变量未定义? 但F12打开 ...
- R语言低级绘图函数-arrows
arrows 函数用来在一张图表上添加箭头,只需要分别指定起始坐标和终止坐标,就可以添加箭头了,还可以通过一些属性对箭头的形状,大小进行调整 基本用法: xo, yo 指定起始点的x和y坐标,x1, ...
- 【Java面试题】48 GC是什么? 为什么要有GC?
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过 ...
- RAC:Oracle11gR2:启动gsd服务
/************/ 正在测试是否必须执行 gsdctl enable gsdctl start /************/ srvclt enable nodeapps -v srvctl ...
- mysql中什么是物理备份?
需求描述: 今天在看数据库备份,恢复的内容,就是对于一个概念,物理备份的理解,在这里记录下. 概念解释: 物理备份:就是对存储数据库内容的目录和文件的直接拷贝.简单来说,就是对物理文件的拷贝. 文档创 ...
- Java集合----概述、Collection接口、Iterator接口
Java 集合概述 Java 集合就像一种容器,可以把多个对象的引用放入容器中. Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组 Java 集合可分为 Set.Li ...
- Unity导入FBX自动进行动画切分
手动处理动画分割 在导入FBX模型过程中,若带有动画呢,需要对它进行切分. 当然这个工作可以在Unity中完成. 比如: 这样手动来分割进行. 自动动画切分 这就需要代码了. 把代码保存成cs文件 ...