| ffdshow CVS 编译基础教程 |
|
| 作者:未知 文章来源:drl 点击数: 更新时间:2007-2-5 20:18:16
|
毫无疑问,ffdshow 是一款很优秀的综合性高效率的 DirectShow 编码/解码/后处理滤镜,使用来自 ffmpeg project 的 libavcodec (也可以调用 XviD 的 VFW 核心) 进行视频解码,后处理功能代码则来自 mplayer,可以相当程度的增强低码率影片的播放品质,进入 2004 年后,更是大大的强化了音频解码能力和视频编码能力,应用面得到了进一步的拓展
ffdshow 的作者 milan cutka 是公认的 DirectShow 编程的牛人之一,我对他的印象则是一个有点疯狂、有点可爱、有时候也马马虎虎的家伙,^_*
在我的角度来看,ffdshow 是一个足够复杂的 project,现在涉及的源文件已经达到了两千三百多个,而且随着功能的进一步扩充和强化显然还在不断的增长,而随着功能的不断强化和新功能、功能改进的计划,对于这样一个复杂的 project 来说,显然 debug 成了一个相当重要的工作,所以自上一次(2004.10.12)发布官方的 binary 之后,一直到现在也没有正式发布一个官方认可的稳定版本,而看着 CVS 和 change log 中的改进,例如更多 4cc 的支持、稳定性、兼容性、性能的改进、neroavc 的完美支持等等,是很让人眼馋的
好在 ffdshow 的源代码管理采用了 CVS 方式,milan 会随时将更新的源代码上传到 SourceForge 的 CVS 服务器上,任何爱好者都可以通过匿名的方式取得全部的源代码自行编译,所以才有了去年八月之前 athos 和 andy2222 的编译版本和去年 10 到现在之间 celitc druid 和我的编译版本。但是 nemolus sama 说的是,光等着别人来更新,有时候确实挺闹心的——我就是左等右等不见 milan 更新 binary,而 celitc druid 基于 ICL 的编译又有一些限制的情况下动意自己编译的,现在相当于受 nemolus sama 所命,把这段时间以来的一些经验和想法在这里聊聊,帮助感兴趣的朋友们打造出自己编译的 ffdshow,顺便赞一下 Open Source 软件的好处
一、环境与工具的准备 所谓工欲善其事,必先利其器,所以在进行工作之前,我们首先要检查一下自己的系统环境是否合适,需要的工具是否齐备 系统环境:最新版本的 Win2000/XP/2003,并且确认自己的 DirectX 和 Windows Media Player 版本是最新的,同时为了更方便的测试编译后的 ffdshow 的效果和为作者提交 Bug,我建议你准备一份最新版本的 Media Player Classic,你可以使用 cynix sama 编译的最新 cvs,如果想使用汉化版本,这里我也有所准备: http://www.sbtop.com/Soft_Show.asp?SoftID=197,对于 MP4 的支持,还需要一个 MP4 Demuxer,推荐是最新版本的 Nero 里面附带的 NDParser.ax,它的好处是可以脱离 Nero 运行而且除了多音轨外,都支持得很完美 CVS 代码下载工具:我使用和推荐的是 TortoiseCVS,下载地址为 http://tortoisecvs.sourceforge.net/download.shtml,当然您使用 WinCVS 也没什么问题,原理和操作都差不多,我使用 TortoiseCVS 的唯一原因大概是因为习惯了 ^_* ffdshow 源代码编译器:ffdshow 的代码是使用 C++ 和 ASM 完成的,所以要想编译成功也需要 C++ 和 ASM 这两种编译器,由于我只打算写一个 基础教程,基于通用性和易用性考虑,这里就以最大众化的 MSVC 7.1 (即Microsoft Visual Studio .NET 2003 中的 C++ 部分) 和基于 GPL 的 ASM 编译器 NASM (下载地址为 http://sourceforge.net/project/show...ackage_id=47034) 编译器为例 DirectX SDK:编译 ffdshow 需要一些来自 DirectX SDK 的基础类库,所以我们需要到微软下载 DirectX 9.0B SDK for C++,这里要提示一下为什么使用 9.0B SDK 而不是最新版本的 9.0C SDK:因为 9.0C SDK 的结构有了一些改变,目前编译不少 DirectShow 程序所需要的 BassClasses 库居然“没”了,虽然你也可以通过某些处理或途径获得,但是这已经脱离了“基础”的范围,所以这里仍旧以 DirectX 9.0B SDK 为例,下载地址为 http://www.microsoft.com/downloads/...&displaylang=en 打包和安装程序制作工具:NSIS,最新版本下载地址为 http://nsis.sourceforge.net/index.p...ID=2&tt_news=18 好,现在我假设你的东西都已经准备好了,现在请按照默认选项安装 Microsoft Visual Studio .NET 2003 (可以只安装 C++ 部分)、DirectX 9.0B SDK for C++、TortoiseCVS 和 NSIS,然后把 NASM 压缩包中的 nasmw.exe 和 ndisasmw.exe 解压到你的 Windows 安装目录 (我这么做是为了避免 C++ 编译器需要调用 NASM 的时候在系统默认的路径中找不到它,所谓偷懒是也,当然你可以勤快一点,放到你喜欢的任何地方,然后手动指定一下路径)
二、ffdshow 源代码的获取和更新
首先看一下这里:http://sourceforge.net/cvs/?group_id=53761 这里告诉你了如何获取 ffdshow 的源代码,其实最有用的就是初次使用时的就是这两个命令,用以获取当前的完整的 ffdshow 源代码:
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ffdshow login
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ffdshow co -P modulename
你可以通过命令行或者 TortoiseCVS 的 GUI 来完成这份工作,我是用命令行完成的——不过由于文件较多(两千三百多个文件,接近 20M)和服务器的延迟,初次下载可能是一个比较漫长的过程而且容易中断,所以这里我打包了一份截至 2005.1.29 的最新版本的完整源代码(3M 多一点),你可以直接下载解压,然后在解压的文件夹上点击右键(如附图),利用 TortoiseCVS 右键菜单里面的“ CVS Update”功能升级到最新的代码,这些更新一般都很小、很快。同样,ffdshow 的代码几乎每天都有更新,所以你可以定期利用“ CVS Update”功能升级源代码到最新版本
三、编译前准备
现在我假设你已经下载和升级了完整的 ffdshow cvs 代码,不过这时候你还不能马上编译它,因为你需要首先编译出它所需要的 DirectX SDK 中的基础类库。
假设你的 DirectX SDK 安装在 C:\DXSDK,现在进入 C:\DXSDK\Samples\C++\DirectShow\BaseClasses,双击文件 baseclasses.vcproj,如果没有意外的,打开他的应该是 Microsoft Visual Studio .NET 2003 的 IDE
看一下上面的图,决定一下你需要生成的解决方案——由于 ffdshow 是纯粹的单字节程序,不支持 Unicode,所以这里你可以只生成 Debug 和 Release 两种解决方案,甚至如果你不想编译 Debug 版本的 ffdshow (用于测试和 Bug 调试),那么只生成 Release 解决方案即可—— 以后的文字我都是假设你只生成 Release 版本,其他的情况请举一反三即可 然后“生成解决方案” 随后别忘了看看 Visual Studio .NET 2003 的“工具”菜单,选择里面的“选项”,检 [1] [2] 下一页
|
|
[ 收藏此页到: 天天|和讯|博采|ViVi|狐摘|我摘|天极 ] 文章录入:kinda 责任编辑:kinda |
|
上一篇文章: FW MX 2004教程(一):界面 1 下一篇文章: 没有了 |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |