(计算机应用技术专业论文)基于web的音视频交互组件设计与研究.pdf_第1页
(计算机应用技术专业论文)基于web的音视频交互组件设计与研究.pdf_第2页
(计算机应用技术专业论文)基于web的音视频交互组件设计与研究.pdf_第3页
(计算机应用技术专业论文)基于web的音视频交互组件设计与研究.pdf_第4页
(计算机应用技术专业论文)基于web的音视频交互组件设计与研究.pdf_第5页
已阅读5页,还剩68页未读 继续免费阅读

(计算机应用技术专业论文)基于web的音视频交互组件设计与研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

武汉理工大学硕士学位论文 摘要 网络信息多元化发展,使音频、视频数据的实时交换成为w e b 应用的必要组 成部分。提供这种服务的关键点在于,如何在h t t p 协议本身的无状态性以及w e b 浏览器基于文本的信息处理方式等约束条件下,使音视频实时交互服务能与w e b 元素无缝协作。 本文以现有的多媒体及网络技术为背景,阐述了一个基于c o m 技术、能与 w e b 页面元素平滑交互的音视频通用组件的设计方案。本通用组件运行于w i n 3 2 环境下i n t e r n e te x p l o r e r 浏览器中,可配置成在线直播( 一对多) 、远程监控 ( 多对一) 、视频会议( 多对多) 、视频聊天( 一对一) 等应用模型。组件各模块 及其自身均为c o m 组件并遵循d i r e c t s h o w 框架。组件基于a t l 开发,以a c t i v e x 控件形式封装,嵌入w e b 页面中通过属性与事件的方式与w e b 脚本进行通讯;网 络通讯协议以r t p r t c p 为主,音频数据压缩采用g 7 2 9 标准,视频编解码部分 采用遵循m p e g 一4 标准的x v i d 项目。组件可配以辅助服务程序来提高服务质量。 辅助服务程序运行在不同操作系统上,使用标准h t t p 协议与w e b 应用模块通讯, 进行客户身份认证及其他数据通讯业务。采用此组件的w e b 应用中,音视频会话 逻辑完全由w e b 设计人员负责设计,组件与具体w e b 应用开发环境无关。 文中首先介绍组件所涉及的几项关键技术,在此基础上提出系统的整体结构 设计,并给出数据定义。论文主体介绍了组件各部分的详细实现方式,并给出各 种应用模型及对应的测试数据,最后提出了完善此组件的方向与方法。 关键词:音视频组件,视频会议,w e b 应用,c o m ,d i r e c t s h o w ,r t p r t c p 武汉理工大学硕士学位论文 a b s t r a c t t h ed e v e l o p m e n to fn e t w o r ki n f o r m a t i o ni nd i f f e r e n td i r e c t i o n sp u s h e si tt ob ea n e c e s s a r yr o l et h a ts u p p l y i n gr e a l t i m ea u d i oa n dv i d e od a t ae x c h a n g es e r v i c ef o r w e ba p p l i c a t i o n s t h ek e yp o i n to fs u p p o r t i n gt h i ss e r v i c ei sh o wt om a k ei t s e a m l e s s l yc o r p o r a t e dw i t hw e b e l e m e n t sw h i l et h e n 1 p p r o t o c o li ss t a t e l e s sa n d t h em a i ni n f o r m a t i o nf o rb r o w s e ri sb a s e do nt e x tf i l e s w i t ht h eb a c k g r o u n do f m u l t i m e d i aa n dn e t w o r kt e c h n o l o g i e s ,t h i sp a p e r p r e s e n t sac o mb a s e da u d i oa n dv i d e oc o m m u n i c a t i n gc o m p o n e n tw h i c hc a nw o r k s m o o t h l yw i t ht h ee l e m e n t so nw e bp a g e s t h ec o m p o n e n ti - u n si ni n t e r n e te x p l o r e r b r o w s e ro nw i n 3 2p l a t f o r m i tc a nb ec o n f i g u r e dt oo p e r a t ea tm o d e l so fl i v e b r o a d c a s t i n g ( o n e t o m a n y ) , r e m o t e m o n i t o r i n g ( m a n y t o o n e ) , v i d e o c o n f e r e n c i n g ( m a n yt om a n y ) a n dv i d e oc h a t i n g ( o n et oo n e ) e v e r ym o d u l eo ft h e c o m p o n e n ti sa l s oac o mo b j e c tw h i c hi sb u i l tu n d e rd i r e c t s h o wf r a m e w o r k n e c o m p o n e n ti sb a s e do na t la n de n c a p s u l a t e da sa na c t i v e xc o n t r o lw h i c hi s e m b e d d e di nw e b p a g ea n ds u p p l i e sp r o p e r t i e sa n de v e n t sf o rc o m m u n i c a t i o nw i t h w e b s c r i p t s t h ep r o t o c o li sd e s i g n e du s i n gr t p r t c pf o rd a t at r a n s m i s s i o na n dt h e x v i do fm p e g 4i su s e da sc o d e c t h es u s t a i n i n gs e r v e rp r o g r a mc a nr u no nd i f e r e n t p l a t f o r m sa n du s e ss t a n d a r dh t t pp r o t o c o lt oc o m m u n i c a t ew i t hw e b m o d u l e sf o r c l i e n ta u t h e n t i c a t i n ga n di n f o r m a t i o ne x c h a n g i n g w h e nu s i n gt h i sc o m p o n e n t ,t h e c o n t r o ll o g i cf o rs e s s i o no fa u d i oa n dv i d e oe x c h a n g ei st o t a l l yh a n d l e db yw e b d e v e l o p e r s t h ec o m p o n e n ti si n d e p e n d e n tt ot h ee n v i r o n m e n ti nw h i c ht h ew e b a p p l i c a t i o ns e r v e ri sr u n n i n g f i r s t l y , s e v e r a lk e yt e c h n o l o g i e sa r ei n t r o d u c e di nt h i sp a p e r , t h e ni st h eo v e r a l ld e s i g n o ff r a m e w o r ko ft h i sa u d i oa n dv i d e os y s t e ma n dt h ed a t ad e f i n i t o n s t h em a i n c o n t e n to ft h i sp a p e ri st h ed e s c r i p t i o no fh o wt oi m p l e m e n ts u c hac o m p o n e n t c o n s t r u c t i n ge v e r ya p p l i c a b l em o d e la n dt h ec o r r e s p o n d i n gs t a t i s t i c si sg i v e na f t e r t h a t t h ew a y so fp e r f e c t i n gt h i sc o m p o n e n ta r er e p r e s e n t e di nt h ee n do ft h i sp a p e r k e yw o r d s :a u d i o & v i d e oc o m p o n e n t ,v i d e oc o n f e r e n c i n g ,w e ba p p l i c a t i o n s , c o m ,d i r e c t s h o w , r t p r t c p i l 此页若属实请申请人及导师签名。 独创性声明 本人声明,所呈交的论文是我个人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢 的地方外,论文中不包含其他人已经发表或撰写过的研究成果, 也不包含为获得武汉理工大学或其它教育机构的学位或证书面使 用过的材料。与我一同工作的同志对本研究所做的任何贡献均已 在论文中作了明确的说明并表示了谢意。 研究生签名: 关于论文使用授权的说明 本人完全了解武汉理工大学有关保留、使用学位论文的规定, 即:学校有权保留送交论文的复印件,允许论文被查阅和借阅; 学校可以公布论文的全部内容,可以采用影印、缩印或其他复制 手段保存论文。 ( 保密的论文在解密后应遵守此规定) 研究生签名:粒导师签名:垂塑日期逝笙 幸矿 注:请将此声明装订在论文的目录前。 武汉理工大学硕士学位论文 第一章引言 随着i n t e r n e t 宽带技术的发展,人们已不再满足于传统i n t e r n e t 滞后性多 媒体服务和被动性多媒体服务。实现网上音视频交互式实时传输已成为研究开发 的重点。音视频交互式实时传输应用包含了视频会议系统、监控系统、远程教育 系统、远程医疗、实时广播、即时通讯等领域,根据每种具体的应用要求,其数 据源的采集、分发模式、码率、服务器荷载要求也互不相同,每种应用都有了较 成熟的产品“”,然而大部分成熟产品都是与具体应用要求或其自身服务紧密结 合,缺乏通用性和= 次开发性。 一个基于w e b 的音视频通讯组件,可以让w e b 开发人员在不必深入了解音视 频技术细节的情况下,将音视频交互功能很快的融入到现有w e b 应用系统中,可 以根据具体要求灵活设计运行模式,自主控制会话过程。满足这种需求的音视频 通讯组件应具备如下特性: a ) 参数化配置 可以通过对组件设置参数来满足功能的定制,例如设置网络传输模式、网络 地址端口、客户端身份信息、是否可采集音视频数据、是否可接收并回放音视频 数据、音视频数据的编码方式。 b ) 控制逻辑与会话逻辑相分离 控制逻辑包括媒体数据采集、回放的链路控制、数据的编解码、数据包结构 定义、数据传输控制、状态信息的反馈等等,这些需要组件及辅助服务器来配合 完成。而客户端身份认证、会话的状态控制( 加入、开始、暂停、结束、退出) 及会话状态信息的动态显示等会话逻辑需要w e b 开发人员配合组件的接口去实 现。 c ) 脚本编程接口 w e b 开发人员能够通过脚本语言( v b s c r i p t j s c r i p t j a v a s c r i p t ) 对 组件的属性进行设置,并调用其中的方法,接收组件事件,通过编程达到对组件 行为的完全控制。 d ) 环境无关性 组件应该能运行在大部分用户的计算机系统里,对软硬件要求不苛刻,能适 应从静态h t m l 页面到p h p 、j s p 、a s p 、n e t 等动态w e b 页面,服务器可以是w i n 3 2 武汉理工大学硕士学位论文 或者是u n i x l i n u x ,客户端采集设备可以是高性能的专业采集卡或者是一般 的u s b 采集设备或者是主机集成的多媒体扳卡甚至是通过软件虚拟的设备。 针对这些特性,本文实现了一个基于w e b 的音、视频交互通用组件。组件通 过h t m l 标签获得配置参数,并提供接口方法供w e b 开发人员使用,以j a v a s c r i p t 等脚本语言实现对组件状态、会话逻辑的控制。组件运行在支持d i r e c t x 9 0 的 w i n d o w s2 0 0 0 ,w i n d o w sx p 。,w i n d o w s2 0 0 3 平台下i n t e r n e te x p l o r e r4 0 以 上浏览器中,辅助服务器可运行在w i n d o w sx pp r o f e s s i o n a l ,w i n d o w s2 0 0 3 , l i n u x2 4 x 以上版本及其他类l i n u x 系统。组件的实现涉及到c o m 规范、a t l 模板库、d i r e c t s h o w 框架、x v i d 视频编解码及g 7 2 9 音频编解码、r t p r t c p 协 议。w e b 开发人员可利用此组件快速地构建音、视频实时交互模块,实现在线直 播、远程监控、视频会议、视频聊天等模式,为w e b 应用增加丰富的多媒体特性。 围绕这一音视频通讯组件系统的实现,本文组织如下:第二章,简介开发过 程中所涉及的主要技术;第三章,整体结构设计:第四章,客户端详细设计;第 五章,辅助服务器端详细设计;第六章,组件的使用( 模式搭建及性能测试) ; 第七章,如何对组件扩展;第八章,结束语。 2 武汉理工大学硕士学位论文 第二章主要技术简介 在目前p c 操作系统以m i c r o s o f tw i n d o w s 为主导的环境下,组件被定位于 面向m i c r o s o f ti n t e r n e te x p l o r e r 4 0 及以上浏览器。c o m ( c o m p o n e n to b j e c t m o d u l e ) 技术能实现组件与浏览器之间的无缝协作,客户端部分均以c o m 组件形 式进行封装。a t l ( a c t i r et e m p l a t el i b r a r y ) 是m i c r o s o f t 公司推出的c + + 类 型库,能支持c o m 组件的快速开发。d i r e c t s h o w 定义了w i n 3 2 下开发流媒体应 用的规范并提供了开发框架,其中规定任何模块都以c o m 组件的形式存在。视频 数据压缩采用最新的m p e g 一4 标准,具体使用了开源项目x v i d 的c o d e c 。 2 1c o m 简介n 、5 1 c o m 技术从严格意义上来说应该称其为一种规范,一种实施方法,用于软件 组件间跨越多个进程、机器、硬件和操作系统进行互操作。m i c r o s o f t 在w i n 3 2 操作系统中为c o m 的使用提供了一系列a p i ,主要的有:c o c r e a t e i n s t a n c e ( ) 、 c o g e t c l a s s o b j e c t ( ) 、c o l n i t i a l i z e ( ) 、c o m a r s h a l l i n t e r f a c e ( ) 、 c o u n m a r s h a l l i n t e r f a c e ( ) 、c o r e g i s t e r c l a s s o b j e c t ( ) 、c o r e v o k e c l a s s o b j e c t ( ) 。任何组件、任何接口都应该具有唯一标识符,这个标识符就是g u i d ( g l o b a l u n i q u ei d e n t i f i e r ) ,g u i d 是一个1 2 8 位的大数,可以保证在时间和空间两方 面都是唯一的。组件i d 被称为c l s i d ,接口i d 称为i i d ,c o ma p i 提供了 c o c r e a t e g u i d ( ) 来生成g u i d 。 c o m 组件的接口定义与实现相分离,接口使用i d l ( i n t e r f a c ed e f i n i t i o n l a n g u a g e ) 进行定义,m i d l 编译器会将其编译出各种开发语言平台的头文件及 类型库,使c o m 组件的客户端( c o m 组件的调用者) 能获得其接口信息,完成编 译或者运行时动态解析。一旦c o m 组件的某个接口被公布( 暴露) 后,这个接口 将永远不会再作任何的变更,但是可以定义从旧接口继承的新接口并追加新的方 法,一个组件可以提供多个接口。任何接口都必须直接或者间接从接口i u n k n o w n 继承,因为i u n k n o w n 定义了组件生存期管理方法及查询其他接口的方法。任何 客户端在引用一个c o m 接口时,必须调用i u n k n o w n :a d d r e f ( ) 方法通知组件, 3 武汉理工大学硕士学位论文 使用完毕,在销毁( 释放) 这个接口引用是,必须调用i u n k n o w n :r e l e a s e ( ) 。 当组件自身引用计数为0 时( 没有任何人引用了该组件的任何接口) ,组件自身 会自动销毁。 在c + + 实现中,接口定义为类,接口方法定义为类中的纯虚函数。接口的实 现部分定义成从多个接口继承的类,类中实现这些接口的每个方法。w i n 3 2 环境 下,组件采取了d l l ( d y n a m i cl i n kl i b r a r y ) 封装形式,一个d l l 可以包含多 个组件,并且必须导出d l l g e t c l a s s o b j e e t ( ) 、d l l c a n u n l o a d n o w ( ) 、 d i i r e g i s t e r s e r v e r ( ) 、d t l u n r e g i s t e r s e r v e r ( ) 这四个函数,这些函数均由 组件开发者来实现。组件在使用前必须进行注册,d l l r e g i s t e r s e r v e r ( ) 函数 将组件i d 及d l l 存储路径等信息存储在系统注册表中。当客户端调用 c o c r e a t e l n s t a n c e ( ) a p i 时,系统从注册表中查找组件i d 所对应的d l l ,并将 其装载到内存,然后呼叫d l l 的导出函数d l l g e t c l a s s o b j e c t ( ) ,该函数中利 用组件的类工厂静态方法i c l a s s f a c t o r y :c r e a t e i n s t a n c e ( ) 创建组件实现类 的实例,并将i u n k n o w n 接口指针返回。系统会定时调用每个被装载d l l 的 d i1 c a n u n l o a d n o w ( ) 来查询是否可以卸载对应d l l 。 c o m 规范规定,组件所暴露的所有接口的q u e r y i n t e r f a c e ( ) 函数必须具有 自反性、对称性、传递性,即从任意一个接口都可以查询到组件所暴露的任何接 口。在c o m 组件设计中,可以使用中间类、嵌套类等技术实现源码级的对象复合, 达到不同对象实体对于相i 司接口有不同实现,这对于实现接口记数等功能具有重 大意义。t e a r o f f 技术能有效减少c o m 实体在暴露众多接口所带来的内存开销。 二进制代码的复合技术有聚合( a g g r e g a t i o n ) 和包容( c o n t a i n m e n t ) 。包容方 式下,在外部对象重新实现内部对象的被包容接口并将函数调用直接传递给内部 对象;聚合技术比较复杂,要求支持被聚合的组件实现两套i u n k n o w n 接口,其 一为委托接口,将该接口上的三个方法都委托到外部对象( 聚合组件) 上去,其 二为非委托接口,用于实现自身的引用记数及接口查询,外部对象在创建内部对 象时,调用内部对象上的非委托接口的接口查询函数,获得i u n k n o w n 接口指针。 为了解决c o m 服务的并发性和重入性以及跨线程、跨进程、跨主机的特性, b l i c r o s o f t 定义了套间( a p a r t m e n t ) 的概念:套间是关于c o m 对象的与进程、 线程相关的并发性与重入性要求,任何c o m 对象都只属于某一个套间,一个进程 或者线程可以拥有多个套间。w i n d o w sn t4 0 发布的c o m 版本定义了两种类型 的套i 叫:m t a ( m u l t i t h r e a d e da p a r t m e n t ) 和s t a ( s i n g l e t h r e a d e da p a r t m e n t ) 。 4 武汉理t 大学硕士学位论文 m a t 中多个线程可以_ 并发执行,s t a 中只能有一个线程执行。w i n d o w sn t5 0 以 后新加了另外一种套间类型:r t a ( r e n t a l t h r e a d e da p a r t m e n t ) ,与m t a 类似, r t a 允许多个进程进入套间执行,但是在某一时刻,只能有一个线程在其中执行, 其他要进入的线程必须等待其执行完毕退出。如果需要从一个套间访问另外一个 套间中某个对象的接口,必须要将这个接口先进行列集( m a r s h a l ) ,然后再进行 散集( u n m a r s h a l ) ,c o m a r s h a l i n t e r f a c e ( ) 及c o u n m a r s h a l i n t e r f a c e ( ) 提 供了这些操作。在实现层,必须为作为服务提供者的c o m 对象建立存根管理器并 为相虚接口生成接口存根,提供入参数的散集及出参数的列集;服务请求者一端 需要生成代理管理器,并为每个接口生成接口代理,映射所请求的接口,列集方 法参数并散集返回结果,不过这一切对于服务请求者是透明的,也即其并不知道 获得的接口指针是指向一个接口代理还是指向真正对象接口。套间的数据传输使 用0 r p c 协议, i r p c c h a n n e l b u f f e r , i r p c s t u b b u f f e r ,i r p c p r o x y b u f f e r , i p s f a c t o r y b u f f e r 这四个接口作为套间访问的不同功能部分,一起实现了这个 协议。使用m i d l 编译i d l 文件的时候,会生成接口列集器及代理管理器、存根 管理器的c 实现,这一实现成为标准列集结构。如果组件开发者需要实现自己的 列集结构,必须在对象实现i m a r s h a l 接口,在其方法中实现自定义访问协议。 2 2a t l 简介“7 1 a t l 充分利用了c + + 中的模板( t e m p l a t e ) 机制及s t l ( s t a n d a r dt e m p l a t e l i b r a r y ) 模板库,将实现c o m 组件所必须的具有共性的代码提取出来,使用模 板进行封装。此外,a t l 也将常用的接口模型、窗口类、c o m 使用工具类也进行 了模板化处理,这样可以使开发者将精力专注于组件接口方法的事务逻辑中。 v c + 十6 0 提供了对a t l 3 0 的完整支持及可视化交互i d e 。 a t l 提供了接口智能指针类c c o m p t r 、c c o m q i p t r 。c c o m p t r 在构造函数中对 指针进行a d d r e f ( ) 操作,在析构函数中释放指针r e l e a s e ( ) ,使用其可以更 安全地进行指针复制操作,同时提供了创建组件、判断是否同一组件、查询接口 等操作。c c o m q i p t r 是c c o m p t r 类的扩展,其可以隐式完成组件创建、接口查询 等工作。c c o m d i s p a t c h d r i v e r 与智能指针类似,是为简化i d i s p a t c h 接口的使 用而设计的。c o m 是语言独立的,为了兼容所有的代码页,要求字符串使用b s t r 类型表示,每个字符占用1 6 b i t ,首部带有4 个字节的长度,尾部为两个空字节。 5 武汉理t 大学硕士学位论文 这种结构使传统c c + + 开发人员觉得处理起来较麻烦。a t l 专门为b s t r 类型提供 了包装类c c o m b s t r ,能方便地对b s t r 进行赋值、比较、序列化等操作。 c c o m v a r i a n t 类简化了脚本兼容数据类型v a r i a n t 的使用。 对应c o m 组件三种套间类型,a t l 提供了c c o m s i n g l e t h r e a d m o d e l ( s 1 1 a ) 、 c c o m m u l t i t h r e a d m o d e l ( m t a ) 、c c o m m u l t i t h r e a d m o d e l n o c s ( r t a ) 作为 c c o m o b j e c t r o o t 模板类的参数,c c o m o b j e c t r 0 0 t e x 及c c o m o b j e c t r o o t b a s e 类提 供了用于实现i u n k n o w n 的辅助函数。自定义类都从c c o m o b j e c t r o o t e x 及其他接 口模板派生,而c c o m o b j e c t 系列类从自定义类派生,是i u n k n o w n 的真正实现。 通过设置d e c l a r e _ a g g r e g a t a b l e 宏,可以得到可聚合组件,此时c c o m a g g o b j e c t 会从自定义类派生。a t l 定义了结构体及宏语句,来维护组件接口映射表。 q u e r y i n t e r f a c e ( ) 通过此映射表完成接口查询工作。开发者通过可 c o m _ i n t e r f a c e _ e n t r y f u n c 宏设置自定义的接口查询函数。c c o m m o d u l e 是对c o m 服务器的包装,可以完成组件自注册、与c c o m c o c l a s s 配合实现类工厂、服务器 生命期管理等任务。 为了令那些无法获取类型库的语言或非编译型语言( 例如v b s e r i p t 等脚本 语言) 能使用c o m 组件,c 咖定义了i d i s p a t c h 接口。通过i d i s p a t c h ,组件客 户可以获得方法、属性名称与d i s p a t c hi d 之间的对应关系,可以正确传递参数 激活接口中的方法及访问组件属性。自定义类将i d i s p a t c h l m p l 作为基类之一, 并将i d i s p a t c h 接口放到接口映射表中,即可获得i d i s p a t c h 的实现。 连接点( c o n n e c t i o np o i n t ) 提供了一个函数回调机制,这使得客户可获得 组件的事件通知。i c o n n e c t i o n p o i n t 接口可为组件的某个事件设置多个订阅( 接 收) 者,为了让组件支持多个事件可被订阅,c o m 又制定了 i c o n n e c t i o n p o i n t c o n t a i n e r 接口,这个接口实现了对多个连接点的管理。 i c o n n e c t i o n p o i n t c o n t a i n e r i m p l 提供了这两个接口的实现。为了使组件支持连 接点,还需要将i c o n n e c t i o n p o i n t c o n t a i n e r 置入接口映射表,并使用宏语句构 建连接点映射表,此外,还需要编写连接点实现代理,v c + 十能自动生成一个实现 代理,名称为c p r o x y i x x x ,并作为组件类的基类。 a t l 还为实现窗口类提供了多个模板。通过从c w i n d o w i m p l 模板继承,可以 立即实现一个支持消息映射的窗口类,c d i a l o g i m p l 可实现有模式无模式对话 框。c a x h o s t w i n d o w 及c a x w i n d o w 模板还可快速创建一个支持a c t i v e x 控件的窗 口。 武汉理工大学硕士学位论文 2 3d ir e c t s h o w 简介n 、9 j 阳 m i c r o s o f td i r e c t s h o w 是d i r e c t x 家族中的一员,是在m i c r o s o f t 平台上 开发流媒体应用的框架,其支持众多的媒体格式,包括a s f 、m p e g 、a v i 、m p 3 以 及w a v ,并且对捕捉设备进行了包装,支持w d m 或者旧的v f w 设备,能自动侦测 并利用硬件加速功能。d i r e c t s h o w 也融合了d i r e c t x 其他技术,例如音频的 d i r e c t s o u n d 、视频的d i r e c t d r a w 等,目前的最新版本是d i r e c t x9 o c 。在 d i r e c t x9 0 中,新增了v i d e om i x i n gr e n d e r e rf i l t e r9 ( r 一9 ) 过滤器, 该过滤器比随w i n d o w s x p 捆绑的v m r 一7 更强大,能兼容d i r e c t x9 0 图形处理功 能,并能控制画面的亮度、对比度、饱和度。最重要的一点在于,该过滤器能工 作于任何安装了d i r e c t x9 0 的环境,在不支持硬件加速的机器中仍能使用g d i 工作。 d i r e c t s h o w 是基于c o m 模型的,基于这个框架的任何部件都是一个c o m 组 件,遵循c o m 协议进行通讯,一般情况下,这些组件都是作为进程内服务器运行 的。m i c r o s o f t 公司在d i r e c t x9 0s d k 中,提供了开发这些组件的基础类,在 基础类里已经实现了c o m 机制,因此开发者只需要将精力集中在数据处理及逻辑 控制上面。d i r e c t s h o w 中的数据处理组件称为过滤器( f i i t e r ) 。过滤器有输 入口和输入口,称为p i n 。过滤器通过p i n 相连接,多个连接的过滤器组成链路。 过滤器之间传输的媒体数据称为样本( s a m p l e ) ,由样本容器( i m e d i a s a m p l e ) 包装,由f i l t e rg r a p hm a n a g e r 管理所有这些组件。作为d i r e c t s h o w 的核心部 分,f ii t e rg r a p hm a n a g e r 除了对整个g r a p h 的运行状态进行协调外,还维护 一个系统参考时钟( 用于同步媒体播放) ,向应用程序发出事件通知,并提供方 法供应用程序来构建g r a p h 。一个g r a p h 里面可以存在一条或者多条链路,根据 在链路中扮演的不同角色,过滤器分成三大类:源过滤器( s o u r c ef i l t e r ) ,变 换过滤器( t r a n s f o r mf i i t e r ) ,实施过滤器( r e n d e r e rf i l t e r ) ,源过滤器可 工作在推模式和拉模式。在推模式下,源过滤器有自己的工作线程,通过调用下 游过滤器上输入p i n 的r e c e i v e ( ) 方法来传递样本,而拉模式则被动等待下游 过滤器来调用其上的方法获得样本。从源过滤器捕捉设备、文件系统、网络等获 得媒体数据,交由变换过滤器进行格式转换、效果处理等,然后将这些加工后的 数据送给实施过滤器,进行播放或者存入文件或者发送到网络上。图2 一l 示意了 一个d i r e c t s h o w 应用中各部分的关系及其在系统中的层次。从图中可以看到, 武汉理工大学硕士学位论文 应用程序与f i l t e rg r a p hm a n a g e r 进行交互,达到控制目的,而具体控制由 f i l t e rg r a p hm a n a g e r 实现,对于工作在系统级( r i n g0 ) 的硬件输入、转换、 输出设备,d i r e c t s h o w 以过滤器的形式将其进行了封装,避免了用户对底层进 行操作。d i r e c t s h o w 还提供了一些辅助开发工具,最常用的是g r a p h e d i t e x e , 开发者可以在这个工具程序内插入各种过滤器、并连接、运行,观察效果。 g r a p h e d i t 在u i 中将过滤器以及过滤器上的p i n 与p i n 之间的连接以图形化的 的方式表现了出来,在内部,则创建了这些组件的实例,并使用f i l t e rg r a p h m a n a g e r 按照操作者要求连接、运行。 图2 - 1 为了区分各种媒体类型,d i r e c t s h o w 定义了一个结构( a mm e d i at y p e ) , 其中包含主类型( m a j o rt y p e ) 、次类型( s u b t y p e ) 、格式块( f o r m a tb l o c k ) 等信息,主类型和次类型都是g u i d ,除了预先定义的媒体类型i d 外,开发者还 可以自定义媒体i d 。格式块中存放了详细的媒体描述信息,例如音频的声道、 采样率、分辨率,视频的压缩方式、帧率、尺寸等。过滤器之间是否能成功连接, 主要取决于收发双方是否能就某一个具体媒体格式达成一致。此外,媒体信息还 能协助实施过滤器正确处理媒体数据。 d i r e c t s h o w 基础类库定义了一个顶层过滤器类c b a s e f il t e r ,所有过滤器都 可以继承这个类。为了简化不同目的的过滤器开发,d i r e c t s h o w 还提供了其他 武汉理工大学硕士学位论文 一些从c b a s e f i1 t e r 类继承而来的基类,如为推模式过滤器设计的c s o u r c e 类, 为变换过滤器设计的c t r a n s f o r m f il t e r 类,为实施过滤器设计的c b a s e r e n d e r e r 类。除了过滤器的基础类外。基础类库还提供了p i n 上的类c b a s e p i n ,以及更 加细化的c b a s e i n p u t p i n 和c b a s e o u t p u t p i n 。c u n k n o w n 声明了c o m 规范中的 i u n k n o w n 接口和三个标准方法,这三个方法在过滤器类中被实现。过滤器之间 的连接,实际上是上游过滤器的输出p i n 与下游输入p i n 的连接,连接两个p i n 时,通过f i l t e rg r a p hm a n a g e r 的i f i l t e r g r a p h :c o n n e c t d i r e c t ( ) 。在此方 法中,首先调用输出p i n 上的i p i n :c o n n e c t ( ) 方法,如果此方法返回成功, 则再调用输入p i n 上的i p i n :r e c e i v e c o n n e c t i o n ( ) ,如果也返回成功,则这 两个p i n 就成功连接了。在i p i n :c o n n e c t ( ) 方法中,输出p i n 会将自己支持 的媒体类型枚举给输入p i n ,如果输入p i n 可以接受,则会返回成功。输入p i n 上的媒体类型检查过程一般放在c h e c k m e d i a t y p e ( ) 函数,而输出p i n 上能提供 的媒体类型则放在g e t m e d i a t y p e ( ) 函数中。媒体类型协商结束后,还需要协 商样本容器的分配器( a l l o c a t o r ) 。推模式下,输出p i n 决定使用下游提供的 分配器还是自己实现一个,然后将决定结果通过 i m e m l n p u t p i n :n o t i f y a l l o c a t o r ( ) 告诉输入p i n ;拉模式下,输入p i n 调用 输出p i n 上的i k s y n c r e a d e r :r e q u e s t a l l o c a t o r ( ) ,来说明自己对缓冲区的要 求,而输出p i n 决定使用哪个分配器,最后将决定结果告诉输入p i n ,不管使用 哪个分配器,都由输入p i n 来获取和释放样本容器。 在过滤器上自定义接口,只需要将过滤器的实现类从接口继承,并实现接口 中的方法。实现过滤器的属性页,过程如下:首先,在过滤器上加入自定义接口, 供属性页存取属性,然后通过i d i s p a t c h 接口支持自动化,暴露i p r o p e r t y b a g 接口并定义属性;在过滤器上实现i s p e c i f y p r o p e r t y p a g e s 接口( 只有g e t p a g e s 这一个方法,返回过滤器所支持的属性页的g u i d ) ;从c b a s e p r o p e r t y p a g e 继承 一个属性页实现类,在类的构造函数中指定对话框资源,然后根据需要在 o n c o n n e c t ( ) 、o n a c t i v a t e ( ) 、o n r e c e i v e m e s s a g e ( ) 、o n k p p l y c h a n g e s ( ) 、 o n d i s c o n n e c t ( ) 等方法中添加代码;将属性页的信息添加到类工厂模板 g。_templates 9 武汉理工大学硕十学位论文 2 4m p e g 一4 及x v i d 简介 于1 9 9 8 年1 1 月公布的m p e g 一4 标准主要应用于视像电话( v i d e op h o n e ) , 视频电子邮件( v i d e oe m a i l ) 和电子新闻( e l e c t r o n i cn e w s ) 等,其传输速率要求 较低,在1 7 6 x 1 4 4 分辨率下,传输率处于4 8 0 0 6 4 0 0 0 b i t s s e c 之间。m p e g 一4 利 用很窄的带宽,通过帧重建技术,压缩和传输数据,以求以最少的数据获得最佳 的图象质量。m p e g 一4 不仅针对一定比特率下的视频、音频编码,更加注重多媒 体系统的交互性和灵活性。m p e g 一4 的主要技术有多媒体传输集成框架( d m i f ) 、 语法描述的支持、可对基于描述语言的合成声音及视觉对象进行编码、场景描述 能力。 为了与m i c r o s o f tm p e g 一4v i d e oc o d e cv e r s i o n3 相抗衡,自由软件爱好 者们遵循i s om p e g 4 标准开发了0 p e n d i v x x 这个m p e g 一4c o d e c ,然而由于这个 项目未遵循g p l ( 通用公共许可) 协议,被入利用作为了一个商业化产品,这促 使o p e n d i v x x 的主要开发者们另起炉灶,发展了遵循g p l 协议的开源项目x v i l ) l ”1 。 x v i b 完全遵循i s om p e g 4 标准,支持多种平台,在编码质量、算法效率方面都 非常优秀。 2 5 小结 本章介绍了开发此通用组件所涉及到的技术及现有可利用的工具、成果,由 此对于如何设计一个能与w e b 应用相融合的音视频交互组件有了基本的技术准 备。以组件构造组件的思想从理论上突显了系统的通用性。 l o 武汉理工大学硕十学位论文 第三章音视频交互组件的系统设计 3 1 系统框架 实际应用中整个音视频通讯组件系统分为三部分:客户端、辅助服务器、w e b 服务器,如图3 - 1 。 c l l e n tc l i e n t c 1 i e n t c l i e n t c l i e n tc l i e n t c l i e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论