0.xvid简介
Xvid(旧称为XviD)是一个开放源代码的MPEG-4视频编解码器,它是基于OpenDivX而编写的。
Xvid的主要竞争对手是DivX。但Xvid是开放源代码的,而DivX则只有免费(不是自由)的版本和商用版本。
详见百度百科:http://baike.baidu.com/view/30246.htm?fr=ala0_1
1.下载xvid源码
官方网站:http://www.xvid.org/
目前最新版本是Xvid 1.2.2 stable release(今天:2010年4月24日)
2.编译环境的设置
2.1 下载安装nasm汇编器(因为xvid的部分程序是用汇编写的)
下载地址:http://sourceforge.net/projects/nasm/
最新版本是nasm-2.07-installer.exe(今天:2010年4月24日)
这里将其安装在D:/NASM下
2.2 安装新版的Windows SDK(编译)
这里安装的是Microsoft Platform SDK for Windows XP SP2
下载地址:http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
2.3 安装DirectX SDK(包括DirectShow SDK)
参见《 DirectShow.1 最简单的DirectShow应用程序 — 播放视频》
2.4 设置Visual C++ 6.0
a.Include files(添加在最前面)
D:/DXSDK/Include
D:/DXSDK/Samples/C++/DirectShow/BaseClasses
D:/Program Files/Microsoft Platform SDK for Windows XP SP2/Include
b.Library files(添加在最前面)
D:/DXSDK/Lib
D:/DXSDK/Samples/C++/DirectShow/BaseClasses/lib
c.Executable files(最后面)
D:/NASM
3.开始编译
3.1 几个VC++的project分别是
a.xvidcore-1.2.2/xvidcore/build/win32/xvidcore.dsw
包括:
libxvidcore.dsp
libxvidcore_static.dsp
xvid_bench.dsp
xvid_decraw.dsp
xvid_decraw_static.dsp
xvid_encraw.dsp
xvid_encraw_static.dsp
b.xvidcore-1.2.2/xvidcore/dshow/dshow.dsp
c.xvidcore-1.2.2/xvidcore/vfw/vfw.dsp
依次编译他们即可。
3.2 遇到错误的处理方法
a.提示xvidcore-1.2.2/xvidcore/src/plugins/plugin_2pass2.c(497) : error C2520: conversion from unsigned __int64 to double not implemented, use signed __int64
修改如下文件:
xvidcore-1.2.2/xvidcore/src/portab.h
行57:# define uint64_t unsigned __int64改为
# define uint64_t __int64
b.提示xvidcore-1.2.2/xvidcore/vfw/src/status.c(246) : error C2520: conversion from unsigned __int64 to double not implemented, use signed __int64
修改如下文件:
xvidcore-1.2.2/xvidcore/vfw/src/status.h
行9:#
define uint64_t unsigned __int64改为
#
define uint64_t __int64
4.备注
调用压缩功能时会显示一个状态窗口,要让它不显示的话,需要在编译vfw工程时,修改
xvidcore-1.2.2/xvidcore/vfw/src/config.c的297行为:
{"display_status",
®.display_status,
0},