- 26 -
2007 3
DirectX软件开发包是微软公司提供的一套在
Windows操作平台上开发高性能图形、声音、输入、输
出和网络游戏的编程接口。DirectX是众多技术的集
合,其中的DirectShow技术为在Windows平台上处理各
种格式的媒体文件的回放、音视频采集等高性能的多
媒体应用,提供完整的解决
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
。
如图1所示,DirectShow系统位于应用层,使用一
种过滤器图表的模型来管理整个数据流的处理过程;
参与数据处理的各个功能模块称为过滤器,各个过滤
器在过滤器图表中按一定的顺序连接成一条“流水
线”协同工作,内置的过滤器图表管理器负责过滤器
智能连接。
按功能来划分,过滤器分为三类:(1)源过滤器
负责获取数据,数据源可以是文件、网络计算机的采
集卡等,然后将数据往下传输;(2)变换过滤器负责数
据处理,如数据流分离、合成、解码、编码等,然后
将数据流继续往下传输;(3)提交过滤器负责将数据送
给显卡、声卡进行多媒体演示,或者转到文件存储。
监控系统采用客户端/服务器端模式。在监控现
场,多个摄像头采集的图像直接送入服务器,服务器
将获得的模拟信号转化为数字信号,实现本地回放。
同时,编码器将数字信号编码成MPEG-4数据用于网络
传送。客户端通过网络接收MPEG-4数据流进行解码,
解码后的多媒体流在指定目标回放,同时客户端可以
对远端现场实时监控。整个监控流程如图2所示。
DirectShow模块完成了客户端的主要功能,并为解码模
块、网络模块、回放模块提供接口。
(1)选择合适的父类
开发过滤器,选择合适的父类十分重要。CBase
Filter是过滤器最上层的基类,DirectShow的软件开发包
根据不同的应用,从CBaseFilter派生了许多子类。根据
实际需要,在这些子类中选择一个做为父类就可以开
[1-6]
一、DirectShow体系结构
二、DirectShow技术的应用
1、基于MPEG-4的远程视频监控系统
2、DirectShow模块构建命令
基于DirectShow的MPEG-4
监控系统的
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
与实现
钟礼秋 马 争
(电子科技大学通信与信息工程学院,成都,610054)
【摘 要】
【关键词】
介绍了DirectShow技术,并用该技术实现了一个基于MPEG-4的网络视
频监控系统,包括多媒体数据的捕捉、解码、回放、定位等功能。基于DirectShow框
架的构建方式极大地简化了复杂的多媒体程序的开发,同时实现了视频监控系统对实
时性和清晰度可调的要求,为MPEG-4应用提供了一套完整的解决方案。
DirectShow技术 MPEG-4
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
视频监控 COM技术
应用程序
事件 命令
过滤器图表
过滤器图表管理器
源媒体流 源过虑器 交换过虑器 提交过虑器 目标媒体流
图1 DirecShow的体系结构 图2 监控系统的流程图
服务器端 客户端
视频回放
网络接受
DirectShow
网络
视频采集
视频压缩 云台控制
网络发送
本地视频回放
控制命令接受
产品设计与实现
- 27 -
2007 3
发出满足要求的过滤器;有些子类本身就满足要求,
只需加入过滤器图表中,极大简化了过滤器的开发。
MPEG-1标准作为VCD工业标准的核心,其编解码
组件已经标准化,标准过滤器图表如图3所示。
目前,MPEG-4还没有标准组件,必须根据实际需
求开发相应的过滤器。参考MPEG-1过滤图表,按以下
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
设计MPEG-4的相关过滤器,如图4所示。图中各
项分别表示为:(1) 过滤器:将MPEG-1源过滤器作为
父类,从文件读取数据修改为从网络读取;(2)码过滤
器:MPEG-4的解码过滤器和MPEG-1的对应部分派生
于相同父类;(3) 提交过滤器:直接利用MPEG-1的提
交过滤器;(4)字符叠加过滤器:完全重新开发;(5)从
网络获得的MPEG-4数据不含音频部分,直接去掉
MPEG-1的相应部分。
(2)过滤器开发
本文实现了各个过滤器的代码开发,如图4所示。
DirectShow是一套完全基于COM的应用系统,过滤器本
身就是一种COM组件,所以开发过滤器就是开发一种
特殊的COM组件。
1)MPEG-4网络读取过滤器开发
参照MPEG-1文件读取过滤器,MPEG-4网络读取
过滤器由以下方面构成:(1)syncRequest:表示一个输
入和输出的请求;(2)AsyncIo:实现数据输入和输出控
制,包括同步模式和异步模式;(3)CMemStream:指定
数据源来自一块内存区域;(4) CAsyncOutputPin:实现
了一个输出针;(5) CAsynReader:实现了一个源过滤
器。
如图5所示,在源过滤器中,上层应用程序传来的
“请求”放入了数据请求队列,CAsyncIo控制该队
列。CMemStream类收到“请求”后,开始读取指定缓
冲区的数据,然后CAsyncOutputPin将数据传到下游过
滤器。
2)模式变换过滤器开发
MPEG-4 网络读取过滤器是拉模式,MPEG-4解
码过滤器是推模式;设计模式变换过滤器,输入针是
拉模式,输出针是推模式,保证过滤器图表连通。该
过滤器包括:(1)NullSp:实现了一个变换过滤器,由
CTransInPlaceFilter 派生;(2) TransInPlaceFilter:是一
个“就地”处理的变换过滤器,由DirectShow的软件开
发包提供。CTransInPlaceFilter包括一个输入针CTransIn
PlaceInputPin和一个输出针CTransInPlaceOutputPin;(3)
CNullSpInputPin:实现CNullSp类的输入针,由CTransIn
PlaceInputPin派生,在CPullPin类辅助下实现了对上级
过滤器的“拉”功能;(4) CPullPin:CPullPin不能作为
独立的针使用,但内部有一个独立的线程CAMThread,
可以辅助输入针去“拉”数据。
3)MPEG-4解码过滤器开
MPEG-4解码器目前还没有统一的标准组件,比较
实用的有两种: 一种是微软公司的MicrosoftMPEG-4
CodecV/V/V;另一种是业界公认的性能和质量优秀
的XvidCodec,解码器源代码开放。经测试,在本系统
中使用Xvid Codec图像效果更好,所以选用Xvid
Codec作为MPEG-4的核心解码库。
该过滤器仅设计了一个CXvidDecoder类,由
CVideoTransformFilter派生,实现变换过滤器框架。
CXvidDecoder类也同时继承了Cvideo TransformFilter类
的一个输入针和一个输出针。CXvidDecoder类包含了
Xvid核心解码库。
解码过滤器收到数据包以后,先检查Xvid解码器
是否激活,然后检查是否指定了输出媒体类型。如果
是,则根据指定的媒体类型调用相应的色彩空间转化
表,设置解码后媒体类型;否则解码成默认类型。解
码时,先获得输入视频数据包的指针和长度,将其拷
1 2 3
输出
输出
输出
F:\caml.mpg
输入
输入
输入
MPEG-1流分离 MPEG-1视频
MPEG-1
视频
视频
提交
提交
音频
音频音频
解码
解码
图3 MPEG-1过滤器图表
输出 输出 输出 输出输入 输入 输入 输入
MPEG-4网络 MPEG-4解码
读取过滤器 过滤器 过滤器 过滤器 过滤器
模式变换 字符叠加 视频提交
图4 MPEG-4过滤器图表
CasyncReaer
CasyncRequest
CAsyncIo
CMemSueam
CAsyncOutputPin
信息流
数据流
请求 请求数据请求队列
数据空闲队列
缓存中的数据
下游过滤器
图5 源过滤器功能关系图
产品设计与实现
- 28 -
2007 3
贝到MPEG-4解码器的缓存中。由于MPEG-4采用面向
对象的编码,其数据包的长度可变。当现场变化平缓
时,数据量较小,反之数据量明显增加。MPEG-4解码
器能自动识别每一帧图像的数据量;缓冲区中多余数
据量将作为下次解码的开始数据,如果缓冲区不够一
帧图像解码数据,返回等待下一个数据包读入后再解
码。将解码的数据打上时间戳,按顺序进行回放。解
码器接口若有XVID_DEC_CREATE,则生成一个新的
解码器;XVID_DEC_DECODE , 则解码一帧图像;
XVID_DEC_DESTROY,则关闭一个解码器。
4)字符叠加过滤器
在视频流的一个时间段内实时叠加一段字符,可
以指定字符的内容、字体类型、大小、颜色、叠加位
置、存在时间。为了完成这些功能,本文设计了两个
类:CFilterOverlay类构建过滤器框架,CoverlayContro
ller类完成叠加功能。
5)网络接口
当DirectShow模块内部各个功能过滤器完成后,还
必须开发该模块的外部接口,使DirectShow模块和其他
模块配合工作。外部接口主要包括网络接口、应用程
序接口和解码器接口。
网络传输中存在许多不确定因素,为了在客户端
得到实时稳定的监控图像,避免网络抖动对视频播放
的影响,本文设计的监控系统在网络接收模块和
DirectShow模块的源过滤器之间采用双缓冲技术,即建
立两个队列:(1) 空闲缓冲区队列,用于接受数据;(2)
尚未处理的数据缓冲区队列,等待源过滤器读取。双
缓冲技术将网络抖动带来的影响减小到最低。
6)应用程序接口
DirectShow模块是应用程序的直接下层模块,监控
系统客户端软件具备功能强大、操作简单、界面漂亮
等特点,DirectShow提供了相应的接口,能很好地满足
了以上要求:
(1)GraphBulder接口:建立过滤器图表;
(2)MediaEventEx接口:获得播放过程中发生的事
件,如播放完毕等。主要方法有SetNotifyWindow,指定
处理事件的窗口;GetEvent,获得事件;
(3)IVideoWindow接口:控制视频窗口属性。主要
方法有put_Owner,指定视频窗口的父窗口;put_Full
ScreenMode,指定全屏播放模式;put_MessageDrain,指
定一个窗口,用于接收视频窗口发出的鼠标消息等;
(4)IMediaControl接口:控制过滤器图表的运行。
主要方法有Run,开始运行;Pause,暂停运行;Stop,
停止运行。
基于COM组件的DirectShow技术使多媒体应用开发
模块化,并且DirectShow提供的一系列功能强大的基类
极大地简化了开发过程,同时画面的质量和实时性也
得到了保证,取得了满意的视觉效果,为MPEG-4的类
似应用提供了一个完整的方案。本文设计的监控系统
在主动丢包测试时,当丢包率达到10%,画面会出现
少量的马赛克,播放依然保持流畅,完全满足远程视
频监控的要求。
三、结束语
【参考文献】
[1] 钟玉琢. 基于对象的多媒体数据压缩编码国际
标准MPEG-4及其校验模型[M]. 北京: 科学出版社,
2000.
[2] COMER D E. 用TCP/IP进行网际互联[M].林
瑶,蒋慧译.北京:电子工业出版社,2003.
[3]路其明. DirectShow开发
指南
验证指南下载验证指南下载验证指南下载星度指南下载审查指南PDF
[M]. 北京: 清华大
学出版社,2003.
[4] Audio- Video Transport Working Group,
RFC1889-RTP: Atransport protocol for real-time
application[S].1996.
[5] Microsoft Corporation. DirectShow online
document ation[DB/OL]. http://www.
msdn.microsoft.com/directx/.,2005-03-25.
[6] 吴 萍, 傅 彦. MPEG-4编码和流式数据传输[J].
实验科学与技术,2003,1(3):79-92.
本文转自《电子科技大学学报》2007.02
【参考文献】
[1]谢子青 《光电隔离抗干扰技术及应用》
《现代电子技术》2003年第1卷第13期
[2]王辛之、王雷、翟成、王闪 《单片机应
用系统抗干扰技术》北京航空航天大学出版社
2001
(上接第 页)20
产品设计与实现