远程视频监控系统中网络通信模块的设计
- 格式:pdf
- 大小:203.72 KB
- 文档页数:3
Winsock的 API函数实现相 互之间的通 信,Winsock 又利 用下 层的网 络通信 协议 和操作 系统调 用实 现实际 的通 信工作。应用程序与Winsock之间的关系如图2所示。
应用程序
应用程序
网络编程接口 网络通信服务
Winsock2的组播通信编程。IP组播实现的流程如图3所示 。
发送端
三、过滤器开发技术 在对网 络通信 系统 的过滤 器设计 中,由 于媒体 格
式 、压 缩方式 、硬件 属性等 方面 的特殊 要求, 使用 开
发 软件 自带的 标准过 滤器往 往不 能满足 要求, 用户 经
常 需要 自行开 发过滤 器,因 此, 就引入 了过滤 器开 发
技 术。DirectShow是微软公司推出的新 一代基于COM的
张明杰 西安邮电学院信管系,陕西,710061
【摘 要】针对远程视频监控系统需要将多个现场视频数据方便、高效地通过计算机网络 传送到多台监控主机上的要求,文章介绍了一种基于过滤器技术的远程视频监控系统网络通信 模块的设计,并详细阐述了网络通信模块中网络过滤器以及组播传输方式的实现方法。该通信 模块在实际应用中效果良好。
因此, 本文选择Direct Show开发过滤 器组件,主要工作
集 中在以下2个方 面:传输和处理 媒体流;将过 滤器封
装为COM组件。
视频捕获 过滤器
压缩 过滤器
视频发送 过滤 器
网络
视频渲染 过滤 器
解压缩 过滤器
视频接 收 过滤器
图1 视频网络通信流程图 1、媒体流的传输和处理
为了传 输数据 ,用 户过滤 器首先 要与过 滤器图 中
过 滤器 是d ll 文件 格式 的 COM组 件 , 需 要 以 下 函 数 : DllMain ( 载 入 时 的 入 口 ) 、 Dll GetClassObject (创 建类厂对象)、DllCanUnloadNow (判断是否 释放 dll) 、DllRegisterServer( 在 注 册 表 中 注 册 dll ) 、 DllUnregisterServer( 在 注 册 表 中 反 注 册 dll ) 。 DirectShow已经 实现了前3 个函 数,后面的2个函数通常 调 用 DirectShow 中 的 函 数 AmovieDllRegisterServer2( ) 实 现。
四、网络通信模块的实现 本系 统 中网 络过 滤器 的开 发是 以微 软Direct X9. 0 SDK示例为基础实现的。 1、网络通信过滤器的实现 (1)网络过 滤器的基本框架网络滤 器的基本框架 代码如下: Class CInputPin//定 义 过 滤 器 输 入 引 脚 类 由 CBaseInputPin派 生 Class CNetworkSend//定义一个由CBase Filter基类派 生 的类 Class CNetOutput Pin//定 义 过 滤 器 输 出 引 脚 类 由 CBaseOutput Pin派生 Class CNetworkReceiverFilter//定 义 一 个 由 CBase Filter 基类派生的类 (2)网络过滤器的具体实现 在网 络过 滤器的 具体实现 中, 要考虑 所采用 的视 频 编解 码器 的媒 体格式 的特 征。 本文 采用 DivXNetworks公 司的DivX5.02编解码 器实现视频 图的压 缩 、解 压缩 编码处 理, 并在 GetMedia Typ e函 数中 定义 媒体格式代码。 网络发送过滤器中GetMedia Type函数的部分代码: CMedia Type * pmt; pmt- >Set Type(&MEDIATYPE_Video); //设置 媒 体主类型 pmt- >SetSubtype( &TIME_ FORMAT_NONE) ; //设置媒体次类型为任意类型 网络接收过滤器中GetMedia Type函数的部分代码: pmt- >Set Type(&MEDIATYPE_Video); //设置 媒 体主类型 pmt- >SetSubtype( &DIVX) ;// 设 置 媒 体 次 类型 为DI VX
开始传 输媒体流之 前, 内存分 配器负责创 建一系 列内存缓冲区。媒体流传输时, 上游(Up st ream) 过 滤器 填充 这些 缓冲区 ,并 将它们 传送 给下游 (Downst ream) 过滤器。Direct Show 使用一 种称作 媒体采 样包 (Med ia Sample) 的 COM 对 象管 理单 个缓冲 区。 通过 控 制 媒体 采 样 包对 象 可修 改 当 前 缓 冲 区 中的 媒 体 类 型、 时间戳 等信 息,也 可利用 算法处 理媒体 数据, 从 而实现对媒体流的处理功能。
操作系统
物理传输介质
图 2 应用程序与Winsoc k之间的关系示意图 Socket是网络 编程中的一个重要的概念,由通信双 方的1 组IP地址 和应用程 序的端口 号组成。 通过IP地址 可以唯一地 确定网络上的 1台主机,而 通过端口号又 可 以 唯一 确 定 该主 机 上的 1 个 应用 进 程, 这 样通 过 Socket就可 以在网络中唯一确定通 信双方的进程,进而 可以唯一确定网络中的1 条通道。 Windows Socket为 IP组 播 的实 现 提 供 2 种 不 同 的 方 法 : Winsock1与 Winsock2。 在 本 系 统 中 实 现 了 基 于
2、CO M组件的实现 COM组件 的实现包 括以下 内容:用 接口规定 过滤 器组件对外提 供的功能; 提供类厂,用以 创建COM 对 象 的实 例; 提供 COM 对象 所在 dl l 文件 的各 个 辅助 函 数,以 完成COM 组件 在应用程 序中的载 入和释放 、在 注册表中的注册和注销。 Direct Show中 的过滤 器、针 脚等COM 对象 通过接 口 对 外 提供 各 种 功 能 。 除了 提 供 标 准 的 接口 之 外 , Direct Show还 提供 了DECLARE _ IN TERFACE 宏 让 用 户自定义接口,从而满足用户对过滤器组件的指定要求。 COM实 现 机 制 中 用 类 厂 创 建 COM 对 象 实 例 。 DirectShow 提 供 了类 厂 类 CClassFactory 和 类 厂 模 板 类 CFactoryTemplate 。通 过将不同 的类厂模 板的内容 填入 类厂 ,实现不同 的类厂对象 ,从而创 建不同的COM 对 象实例。
产品设计与实现
推荐:亚高效过滤器http://www.songfengkou.com/4/ 铝隔板高效过滤器http://www.songfengkou.com/2/ H13/H14无隔板高效过滤器http://www.songfengkou.com/5/
2 00 9 3
远程视频监控系统中网络通信模块的设计
流媒体处理的开发包 ,提供了很多标准过滤器
(Filter) 供 用户直接使 用,同时为 过滤器组件 开发提
供 了一套基 类库(Base Class Library) ,包括过滤 器基 类 、针 脚基类 和一些 辅助类 。基 类库为 过滤器 组件 的
开 发提 供了一 个框架 ,省去 了复 杂的底 层编码 工作 ,
【参考文献 】 [1] 陆其明.DirectSho w 开发指南[M].北京:清华大学 出版社,2003. [2 ] M icro so ft. Microsoft DirectX M ed ia SDK Do cumen t[M].R edmond Washington :Microsoft Press,2000. [3] 盛健,季晓勇.DirectShow过滤器组件开发技术及 其应用实例[J].微型机与应用,2004(1):47~49. [4 ] 胡毅 ,胡 咏梅 ,单 玉 峰等 .基 于网 络 的多 媒 体远 程 监视系统的研究与实 现[J].计算机应用 研究 ,2000 ,17 (9 ):1 00 ~1 03 . 转自《工矿自动化》2009年第1期
- 45 -
产品设计与实现
20 09 3
pmt- >Set Format Type(&FORMAT_Video Info) ;
//设置媒体格式 pm t - > Se t Sa mp l eS i ze ( pvi - > bm i He a de r .
biSizeI mage);//设置媒体采样包大小
【关键词】远程视频监控 网络通信模块 Direct Show 过滤器 CO M IP组播
一、引言 远 程 视 频 监 控系 统 在 各 个 领 域 都 有 着 广泛 的 应 用, 是当今 大型企 业、 银行、 厂矿等 信息 交流广 泛的 企业 生产和 管理的 必备 系统。 如何将 多个 现场的 监控 数据 方便、 高效地 通过 计算机 网络传 送到 多台监 控主 机 上 , 是远 程 视 频 监 控 系 统需 要 解 决 的 一 个 主要 问 题。 因此, 在远程 视频 监控系 统的开 发中 ,最关 键的 部分 是网络 通信模 块的 设计。 笔者在 煤矿 远程视 频监 控系统的开 发过程中,采用 Visual C++编程工具 ,运用 面向对象的程序设计思想和DirectShow 技术,实现了以 组播方式的多路视频的远程监控和传输。 二、网络通信模块的设计 系统 的网络 通信模 块的 主要功 能是以 组播方 式发 送和 接收网 络视频 流, 它的实 现主要 是网 络传输 过滤 器的开发, 包括网络发送过 滤器和网络接收过 滤器2个 部分,如图 1所示。网络 发送过滤器用于 处理经压缩编 码过 滤器编 码后的 视频 流,将 数据流 分块 打包后 发送 出去 ;网络 接收过 滤器 用于从 网络获 取媒 体数据 并将 数据 传送到 下一级 解码 过滤器 。因此 ,网 络通信 模块 设计的关键是网络通信过滤器的开发。
Direct Show过 滤 器 使 用 一 种 称 作 内 存 分 配 器 (Allocator) 的COM 对 象管 理 媒体 流 数据 。在 连 接2 个过滤器 前,其中一个过 滤器上的针脚提供 1个内存分 配器 ,另外 一个 过滤器 上的针 脚对该 内存分 配器进 行 检测。当2 个针脚都支持该内存分配器时,协调成功。