Xvid在Windows下的编译方法(VS2013)
来源:互联网 发布:sql用到表中的字段 编辑:程序博客网 时间:2024/05/01 05:46
###Date: 2017/3/31
###Author: SoaringLee
时间过得真快,一晃就3月底了,离毕业也就3个月了。前段时间在大华实习的时候,主要是在学习Mpeg4解码库的编译维护的东西。后来通过对Mpeg4标准的深入学习,基本上了解了这个标准的基本内容。Mpeg4标准的核心就是基于对象的编码,但是由于对象提取技术一直没有进展,所以实际上Mpeg4实际上和之前的Mpeg2,H.263一样仍然是对矩形帧进行编码。现在实际使用的是Simple Profile(SP)和Advanced Simple Profile(ASP)这两个Profile。
在学习和分析Mpeg4解码库源码的过程中,一直发现xvid这个词,于是去网上查了下,才知道,原来Xvid是开源的Mpeg4编解码器,于是打算学习一下这个库的相关内容。
下面介绍一下Xvid在VS2013下编译的方法。
(1)首先看一下xvidcore这个工程目录,其中包括了源码src,文档doc,编译文件夹build,还有2个文件夹不太清楚(dshow和vfw)。我们知道dshow和vfw是微软公司在 不同时期的音视频处理封装库,这两个文件夹中应该是对xvid的封装。
(2)进入到buid——win32文件夹中,可以看到里面是VC6的工程,需要将其转换到VS2010。打开libxvidcore.sln,可以看到在这个解决方案下有3个工程,libxvidcore,xvid_encraw和xvid_decraw。
libxvidcore这个工程是源码文件的工程;
xvid_encraw是编码器demo工程,xvid_decraw是解码器demo工程。
(3)现在对源码工程libxvidcore进行编译,会提示nasm不是定义的命令。因为在源码中存在汇编文件,需要汇编器nasm。nasm的下载可以从官网http://www.nasm.us/上下载,也可以从sourceforge上下载(http://sourceforge.net/projects/nasm)。下载后安装nasm后,将汇编器nasm.exe拷贝到VS2013的安装路径下的VC/bin目录中。这样这个问题就可以解决了。
(4)再次对源码工程进行编译,编译成功了。此时生成的库文件为xvidcore.dll.a和xvidcore.dll。其中xvidcore.dll.a是动态库文件对应的静态库。为了生成xvidcore.lib,只需要将项目libxvidcore,属性-配置属性-高级-导入库中,将bin\xvidcore.dll.a修改为bin\xvidcore.lib。
(5)接下来,编译编码器demo和解码器demo。
首先,需要将解码器demo属性中的附加依赖项进行修改:将xvidcore.dll.a修改为xvidcore.lib。然后将解码器工程xvid_decraw选为启动项目,编译运行,成功,得到xvid_decraw.exe。
编码器demo的编译过程同上,编译成功,得到xvid_encraw.exe
至此,Xvid在VS2013下的编译就完成了。接下来就需要对Xvid的源码进行剖析了。
另外,由于我的实验室电脑上安装的是VS2015版本的,于是在VS2015上也进行了编译运行,但是编译xvid_encraw项目时出现一个bug:
从截图中可以看出,这是编译xvid_encraw.c后发生的链接错误,具体原因是SetRect和CoInitializeEx这两个函数不能解析。这两个函数是Windows中包含的,为什么不能解析还没有弄明白?
又因为这两个函数是用在设置AVI输出文件中的,对编译mpeg4编码器demo影响不大,因此可以通过关掉下面的宏来成功编译。
//#define XVID_AVI_INPUT
//#define XVID_AVI_OUTPUT
OK,现在可以在VS2015上成功编译了。
- Xvid在Windows下的编译方法(VS2013)
- xvid源码在Visual C++ 6.0下成功编译的方法(转)
- Xvid在Linux/Unix下的编译(Cygwin/VMware)
- xvid源码在Visual C++ 6.0下成功编译的方法
- xvid开放源码xvidcore-1.1.3.zip在VC下成功编译的方法
- FontConfig在windows和VS2013下编译
- Pixman在windows+vs2013下编译
- Pango在windows+vs2013下编译
- xvid库在vc8.0下的编译
- 在linux下编译安装xvid
- sba 在windows下的编译方法
- GDAL2.1.0在VS2013下的编译
- python在vs2013下的编译
- visual studio 2005下xvid的编译
- xvid 在MAC平台编译的问题
- Caffe在Windows的VS2013运行方法
- 在Windows平台VS2013环境下编译Boost库
- 在windows下使用vs2013编译和调试mysql源代码
- 程序报FIPS验证加密算法异常时的处理方法
- 夜间模式
- HttpSessionBindingListener和HttpSessionAttributeListener区别
- 数据库笔记 2
- html基础
- Xvid在Windows下的编译方法(VS2013)
- RealmObject类不支持构造函数
- V-for 三层json对象,可折叠,添加,删除,以及编辑
- java环境变量配置详解
- 安卓内存优化
- JavaScript运算符
- Android——加速传感器(ACCELEROMETER)的应用
- OAuth 2和JWT
- Spring 中使用 HSQLDB