对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

DirectDraw用法相关推荐

  1. DirectDraw基础篇(学东西还是基础的好哦!)

    第一节 DirectDraw简介 Grubers的一个观点是DirectDraw"只是一个bltting发动机".这是相当准确的,但却太简化了.更准确地讲,DirectDraw是一 ...

  2. DirectDraw基础篇

    DirectDraw基础篇(学东西还是基础的好哦!) 第一节 DirectDraw简介 Grubers的一个观点是DirectDraw"只是一个bltting发动机".这是相当准确 ...

  3. 关于DirectDraw

    本文主要是在网上收集到的一些关于DirectDraw的文章! 一下为相关文章和链接(为什么给了链接还要给文章?因为怕给的链接失效,这样我们就找不到那些好的文章了,在这也谢谢那些提供文章的人!!!) 文 ...

  4. DirectDraw 基础篇

    DirectDraw基础篇(学东西还是基础的好哦!) 第一节 DirectDraw简介 Grubers的一个观点是DirectDraw"只是一个bltting发动机".这是相当准确 ...

  5. 一个DirectDraw入门程序

    只要是介绍编程的书,似乎有一个不成文的规定,即第一个例子由"Hello World"开始,本教程也不例外.那么,如果你早已迫不及待想初尝DirectDraw程序编译成功后的&quo ...

  6. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  7. Pandas_transform的用法

    先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...

  8. Python中yield和yield from的用法

    yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...

  9. pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法

    squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...

最新文章

  1. 2021年大数据Kafka(十):kafka生产者数据分发策略
  2. 如何把一个用户加入sodu组
  3. python断网还能用吗_室友打游戏时,让他断网掉线!明明没断网就是没网!Python黑客!...
  4. 【PAT乙级】1070 结绳 (25 分)
  5. oracle 联表求和不重复_别再瞎忙了,Excel多表格求和用这4个方法分分钟完成的事...
  6. 最渣的 Spring Boot 文章
  7. Eclipse+ADT+Android SDK 搭建安卓开发环境
  8. Mysql配置文件读取顺序
  9. Aspose.Cells Smart markers 基于模板导出Excel
  10. Android Studio 之 Live Templates 使用
  11. windows10+ubuntu16.04双系统搭建
  12. V8 7.4释出!支持JIT-less不需可执行内存也能执行
  13. (九)java多线程之CyclicBarrier
  14. Python 地图篇 - 使用pyecharts绘制世界地图、中国地图、省级地图、市级地图实例详解
  15. 斗鱼mac html5,斗鱼直播伴侣ios苹果版使用教程_苹果版斗鱼直播伴侣怎么用_3DM手游...
  16. SIM800A/C只能发短信不能收短信解决方案
  17. Formality形式化验证脚本范本
  18. U盘(电脑)文件夹变成exe(应用程序)怎么解决
  19. 板鸭豆子红辣椒袋鼠的世界杯
  20. Oracle HR 样例用户的建立 10g,11g均可

热门文章

  1. squirrelmail 配置
  2. sql 判断某列是小数
  3. Spring 和 Quartz 实现定时任务
  4. 织梦火车头采集文章定时自动审核文章及更新文章后自动推送百度(站群排名必备)
  5. 一次恢复操作系统的失败之旅:使用主盘对从盘进行独立系统安装过程实践——OneKey7.3.1
  6. java 401 Unauthorized
  7. 华为HMS的“生态雪球”,滚动在万物智联的新跑道
  8. 春节假期,如何保护一老一小?
  9. html scale缩放,scale()方法缩放当前绘图至更大或更小
  10. 在谈布里渊区三种k点采样算法