directshow学习笔记

directshow学习笔记

ID:1355068

大小:1.75 MB

页数:218页

时间:2017-11-10

directshow学习笔记_第1页
directshow学习笔记_第2页
directshow学习笔记_第3页
directshow学习笔记_第4页
directshow学习笔记_第5页
资源描述:

《directshow学习笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1AboutDirectshow基础1.1设置dshow的开发环境如果你用VC开发环境,一定要在Setting里设置下面的东西包含头文件Dshow.h所有的dshow应用必须包含包含动态库Strmiids.lib导出所有接口的CLSID和接口IID定义。必须包含Quartz.lib1.2先演示一下dshow使用的一个例子这里暂略。1.3Direcshow概述DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。那么,DirectShow能够做些

2、什么呢?且看,DirectShow为多媒体流的捕捉和回放提供了强有力的支持。运用DirectShow,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。它广泛地支持各种媒体格式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒体数据的回放变得轻而易举。另外,DirectShow还集成了DirectX其它部分(比如DirectDraw、DirectSound)的技术,直接支持DVD的播放,视频的非线性编辑,以及与数字摄像机的数据交换。更值得一提的

3、是,DirectShow提供的是一种开放式的开发环境,我们可以根据自己的需要定制自己的组件。DirectShow的系统组成应用程序与DirectShow组件以及DirectShow所支持的软硬件之间的关系如图1所示。图1DirectShow系统框图1.4FilterGraph及其组成这篇文档中我想给讲述Directshow的主要组成部分,一个概括性的入门文章,对于应用开发或者directshow的开发者都有所帮助。1DirectShow的FilterDirectshow是基于模块化,每个功能模块都采取COM

4、组件方式,称为Filter。Directshow提供了一系列的标准的模块可用于应用开发,开发者也可以开发自己的功能Filter来扩展Directshow的应用。下面我们用一个例子来说明如何采取Filter来播放一个AVI的视频文件。从一个文件读取数据,形成字节流。(这个工作由源Filter完成)检查AVI数据流的头格式,然后通过AVI分割Filter将视频流和音频流分开。解码视频流,根据压缩格式的不同,选取不同的decoderfilters。重画视频图像,通过RendererFilter。将音频流送到声卡进

5、行播放,一般采用缺省的DirectSoundDeviceFilter。流程见下图。从上面的图表看,每一个filter都一个其他的一个或者两个filter相连接,连接点也是com对象,我们称为Pin。Filter通过pin将数据从一个filter传递到另一个filter中,从而可以使数据的filter的链表中流动。图中的箭头表示filter链表中的数据流的方向。在Directshow中,一个filter链表我们称为filterGraph。Filter具有三个状态,运行,停止,暂停。当一个filter运行时,它

6、就处理媒体数据流,当停止时,filter就不在处理数据,暂停状态常用来给运行状态之前curedata。DataFlowintheFilterGraph一章详细描述了这些概念,可以参考。除非特别的例外,所有Filtergraph中的filter的状态的改变都是统一的,也就说,filtegraph中的所有的filter的状态改变是一致协调的。也就是说,我们也可以用filtergraph也可以有运行,停止,暂停三种状态。Filter一般分为下面几种类型。  (1)源过滤器(sourcefilter):源过滤器引入

7、数据到过滤器图表中,数据来源可以是文件、网络、照相机等。不同的源过滤器处理不同类型的数据源。  (2)变换过滤器(transformfilter):变换过滤器的工作是获取输入流,处理数据,并生成输出流。变换过滤器对数据的处理包括编解码、格式转换、压缩解压缩等。  (3)提交过滤器(rendererfilter):提交过滤器在过滤器图表里处于最后一级,它们接收数据并把数据提交给外设。  (4)分割过滤器(splitterfilter):分割过滤器把输入流分割成多个输出。例如,AVI分割过滤器把一个AVI格式的

8、字节流分割成视频流和音频流。  (5)混合过滤器(muxfilter):混合过滤器把多个输入组合成一个单独的数据流。例如,AVI混合过滤器把视频流和音频流合成一个AVI格式的字节流。  过滤器的这些分类并不是绝对的,例如一个ASF读过滤器(ASFReaderfilter)既是一个源过滤器又是一个分割过滤器。2关于FilterGraphManagerFilterGraphManager也是一个com对象,用来控制F

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。