视频播放器制作学习之旅----迷途羔羊(DirectDraw DirectShow)

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

P的学生,我觉得很有必要看看这些名词概念:Platform SDKMSDNAPIVC DirectX(DX)DirectShow(为什么单独,听说它与DX已经分离,它与DX开发包一起发布,并集成DX中的其它技术,如DirectDrawDirectSound)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 的环境搭好了。

从明天开始,学习视频到底是怎么播放的。。。敬请期待,呵呵 我的博客一般记录我学习的旅程,如果你有兴趣看,请不要在意我的措词。。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值