视频播放器制作学习(DirectDraw DirectShow)

来源:互联网 发布:sim卡注册网络流程 编辑:程序博客网 时间:2024/05/16 12:40

对DirectShow 和 OPenCV 无法选择,对SDK等相关概念不够透彻,且环境的配置还是蛮复杂的。好在,通过学习,我没有了这些问题。因此这篇笔记应运而生。

第五步是建立在已经打开一个文件的基础上的,就不能在这个InitDD中了。对于一个新手(比如我啊,我也在一边学习一边写文章)打开文件就很迷茫,因为这个文件不是BMP文件,BMP文件还有固定的结构体,视频文件是什么样的格式呢?更直接的说,我怎么得到视频文件中的裸数据!网上有人建议去看一下“陆其明”《DirectShow开发指南》。也就是说这里我们应该使用DirectShow。这DirectShow又是什么呢?我们再百度一下。

 

MSDN上的介绍是:

Directshow is a media streaming architecture for the Microsoft Windows platform.Using DirectShow ,your applications can perform high-quality video and audio playback or capture.

 

好了,问题的关键是我们怎么使用这个开发包播放视频文件呢。类似DirectDraw的学习,这个开发包中的主要接口是什么(我的学习思路是对着的吧?)。

我觉得比较好的方法(如果你时间多耐得住看MSDN上的英文)就是顺着

 

学下去。我这里就不按部就班了,我写下我关心的也是编程中必须注意的(都翻译自上面的topics)第一个就是配置下环境,对所有的Directshow 应用程序都应该包含Dshow.h ,有些DirectShow接口还需要额外的头文件,具体的会在相应的接口说明中说。需要的库文件是“Strmiids.lib”,“Quartz.lib”,

这里又产生了一个问题,编译了就是找不到“Dshow.h”头文件,有人说我没安装DX SDK,难道我装了操作系统,或者说装了VC 集成环境这些东西没有一块安装吗?(因为DirectShow与DirectX不是一个部门开发,它们的开发进度和更新速度与DirectX不一样,所以微软将它们分开,DirectShow SDK在DirectX Extras和PlatForm SDK 中都有)

开始/运行 输入dxdiag 打开DirectX诊断工具:

 

可以看到当前DirectX版本为 9.0c

我想我又学糊涂了,不过没关系,又糊涂到清醒的过程才是进步的过程:事实是这样的,首先Microsoft DirectX SDK 是开发包,用于编程,是我们程序员用的,上面dxdialog显示的是DirectX 9.0驱动版本号,是3D驱动,很多游戏需要,我们关心的是操作系统装好之后自带DirectX SDK吗?答案是系统是不会带SDK的,VC也不带directX SDK,我们需要单独下载安装,然后把相应的头文件目录和库文件目录添加到VC的目录列表中,就可以使用DirectX SDK中的头文件和函数了。

接着,我顺便有了这些疑问,Platform SDK 是什么呢?Platform SDK(有时也简称PSDK)现在已被Windows SDK 取代,Windows SDK从Windows Vista开始使用,它包含以前platform SDK 中的所有内容,同时还包括.Net框架的内容。这么说PSDK不会再有新的版本。其实,微软每推出一个重要的Windows 版本,一般都会同时推出一个SDK(Software Development Kit)SDK 包含了开发该WINdows 版本所需要的Windows函数和常数定义、API 函数说明文档、相关工具和示例。SDK一般使用C语言,但是不包含编译器,因此我们安装完操作系统后(同样没有SDK),需要自己下载SDK,但是下载下来也没有用,因为它只是些API等,没有编译器,于是我们下载了一个Visual C++ 这么个IDE 。哈哈,我告诉你一个秘密:其实我们安装好Visual C++之后已经有了PSDK了,因此没必要自己下载它(除非你嫌弃这个自带的,需要更新鲜的,但是VC诞生于98年,比较过时了,你要用新的SDK,与VC关联不敢保证没有错误)。从Windows 98往后,Windows SDK叫Platform SDK 后来到了Vista 又换回去了。说到编程,我又想起来了两种编程方式,一个就是所谓的SDK编程,另一个就是使用Application Framework,MFC便是其一(其他的还有如BCB的OWL),Application Framework是对SDK的封装,有非常强大的优点(现在流行的侯俊杰的 《深入浅出MFC》便是介绍MFC机制的书籍)。SDK编程就是直接使用Windows API进行编程,API(Application Programming Interface)有几千个函数组成,MFC(或其他的Application Framework)是API的封装,结合面向对象的继承、多态组成一个个类,形成类库。呵呵再说就啰嗦了,还想提醒下看文章的你,API不是Windows 特有的,Linux 有,可编程的数据采集卡有。MFC从哪来的呢?我需要下载吗?似乎这些问题太怪异了。微软早期为方便程序员开发程序,成立了一个AFX小组(AF即Application Framework 的意思,后面缀一个X没什么具体含义,为了酷吧)。有些操作系统在安装好之后在system目录就有了MFC的动态库文件MFC42d.dll 。有的则没有,这又说道MFC在编程时分静态链接和动态链接,到此为止。MSDN压缩包解压就可以发现,它不仅仅包含了我们经常用的一些HTML帮助,还包括许多东西,如samples(其中就有DirectX的)。

P的学生,我觉得很有必要看看这些名词概念:Platform SDK、MSDN、API、VC 、DirectX(DX)、DirectShow(为什么单独,听说它与DX已经分离,它与DX开发包一起发布,并集成DX中的其它技术,如DirectDraw、DirectSound)、OpenCV。

下载DirectShow地址:http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=8af0afa9-1383-44b4-bc8b-7d6315212323

 

页面截图:

下载后解压至某个文件夹。如图

 

 

问题远没有解决,虽然没有了Dshow.h这个错误,但是又出现没有什么 safestr.h (好像是这个文件,记性不好给忘了),这个文件在新的PSDK中才有,我用的是VC6.0 它的PSDK版本还是98年的,若换版本,网上有人说不一定兼容。算了,也该习惯使用.net 平台了。

 

于是乎,我使用了电脑上早就装的VS2005 ,我又下了比较新的DirectX SDK Aug 2007 安装好之后,在VS2005中设置好了路径。这个过程是网上摘来的,我就不说了,最终基于VS2005 DirectDraw DirectShow 的环境搭好了。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zlc19876/archive/2010/03/07/5354742.aspx