开篇:润墨网以专业的文秘视角,为您筛选了一篇基于DirectShow架构的无线视频服务系统设计研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘要:视频实时网络化已经成为信息传播的重要途径,特别是随着无线技术的不断发展,以无线网络承载的视频业务将进一步推动各类迫切需要通过视频才能尽情表达的内容和服务。但无线网络本身固有的种种约束与人们对视频服务的期望和要求存在距离,通过优化视频数据的传输和控制机制,系统架构设计的层次与方法和图像处理策略,以不依赖于具体某种视频压缩技术为前提,进一步有效的挖掘现有无线网络的潜力,让视频尽早的进入商业服务领域成为可能。
关键词:无线网络;视频;系统架构;DirectShow;传输机制;控制
中图分类号:TP37文献标识码:A 文章编号:1009-3044(2010)01-80-03
Wireless Video Services System Design Based on DirectShow Architecture
ZHANGQing
(Department of Automation, Shanghai Jiao Tong University, Shanghai 200240, China)
Abstract: Real-time network video technology has become an important means of information dissemination, especially as wireless technology continues to evolve in networks for video services. That will further promote the urgent need for various types of expression by video in order to enjoy the content and services. However, there is distance, inherent in all kinds of wireless network constraints and people's expectations and requirements of video services. With the optimizing the video data transfer mechanism and control mechanism, the system architecture level and method and image processing strategies which never depends on specific types of video compression technology. Effectively exploit the existing potential of wireless networks would make video as soon as possible to enter the field of business services.
Key words:wireless network; video; system architecture; DirectShow; transfer mechanism; control
1 DirectShow 架构介绍
DirectShow 是微软公司提供的一套在 Windows 平台上进行流媒体处理的开发包,与 DirectX 开发包一起[1]。
DirectShow [2]是基于组件对象模型(COM)的一种架构,该架构的三层关系本质是:Source 是该架构的入口,同时提供数据源;Transform 是该架构的处理核心,要对所有数据进行各种运算加工,凡对数据进行操作的COM模块,统属于该层次;Render 是该架构的表现核心,各种媒体类型的数据表现均可在该层完成(参考图1)。
2 directshow 架构分析
2.1 理解Pin
Filter 的连接是通过其上Pin脚连接,方向通常从Upstream Filter 的输出Pin 脚传向Downstream Filter 的输入Pin脚,这个连接的本质是一个协商的过程。Pin间的数据传送单元sample(Allocate COM组件)通过协商完成 sample的容量大小,数量和创建者,以及连接双方Pin上使用的媒体类型,至此协商完成。显然, 网络视频流中的每个sample单元与Pin间传送的sample单元间没有直接内容的关联。一个是根据压缩算法装包/解包原则实现,另一个是根据网络传输打包原则实现。
2.2 封装
这里将不讨论视频压缩的相关技术, 直接引用经H264压缩过视频数据做仿真系统分析讨论。以下图示标明分别用UDP(图2)和TCP(图3) 封装封装的全过程, 可将其分三层理解。
图2 图3
第一层:图像压缩包根据压缩算法的规范和分界,无论是流模式还是帧模式,视频中的每一个张图像都被虚拟化成一个个变长大小的包,每一个逻辑包在经过解码之后,都是一张完整的图像表达(解码前数据包之间的关联取决于编码策略和方式)。
第二层:网络包的尺寸变化范围是限定的。显然,一个逻辑图像包多数情况需要被多个网络包去承载,对于TCP这种封装形式,其被称之为流封装,包与包间是无缝的,如果需要在每个网络数据包上运用组合算法,则需要增加分界标识。而用UDP这种封装形式,其称之为数据包封装,包与包间是存在固有边界,虽然UDP是不可靠的传输(可通过多种应用算法和策略优化降低其不可靠,稍后会谈及)但其快速响应的优点仍在图像信息传输中扮演重要的角色。
第三层:在每一个网络包中,为了有效的管理数据,我们不单单加载数据信息,也封装进各类应用管理协议和标识字段,用来控制,标识,表达其中的内容,如RTCP。
3 视频在无线网络中实时传输所面临的若干挑战和对策
3.1 主要问题点和设计关键点
无线网络,特别是采用802.11WLAN时[3],持续负荷大容量数据时容易受外界环境干扰从而出现延迟增大,掉包,连接中断,无信号等状况。除了在工程安装方面的优化改造,加强增益以外。还可从系统设计方面,考虑关键帧的超时重传和非关键帧的缓冲重组机制,以及主动丢弃策略[4]。同时心跳保活机制和主动扫描最强信号也可有效的保障无线网络连接的不间断。
3.2 与DirectShow 的匹配设计
当使用独占的网络资源,并且网络带宽充裕,网络状况始终保持良好。由于采用DirectShow架构进行视频处理[5],数据传送单元sample的内容既是每次要render的图像完整内容。如果sample不是完整的一帧图像内容,则会出现图像信息丢失(表现为花屏和黑屏) ,而采用H264编码算法,存在I帧,P帧,B帧大小各异,且即便是同种类型的帧之间的大小也不相同。需要完整的将一帧图像通过网络传出就需要花费数量不等的RTP包,这里可采用Frame-Marker技术,即在图像采集压缩打包的一端将每一帧图像做标记,这样在网络的另外一头进行解包时,在没有得到当前帧结束标志之前,始终以阻塞状态对待下一级的连接Pin,暂时不传送数据给下一级等待接收处理数据的filter,并持续将新接收到的数据堆放在缓冲bucket中。这样就可保证在Pin间传递的sample中装载的是完整的一个I(或P或B)帧图像,使得解码之后,完成一帧图像的Render表现任务。
3.3 多策略
当存在多个连接终端时(点对点连接)[4,6],网络中的带宽资源的需求会增大,就存在网络可以提供的带宽资源小于等于某一时刻实际需要的带宽总资源的可能性。这时,就会出现网络资源占用峰和占用谷的现象,而图像的表现则会可能出现以下两种状况:
①如果在码流控制中辅助有速度匹配,则会出现图像逐渐延迟,而这种延迟具有累加效果,最终这个延迟的上限时间由网卡中接受RTP (承载在UDP)缓冲的大小而限制,当限制达到门限值,就会出现个体差异的固有图像延迟。
②如果没有在接收端的Source Filter进行码流控制,并且解码器有能力进行快速解码,则会出现短暂的快放现象。这是其消费已写入网络缓冲的数据行为表现,有时也有时快时慢的现象。
我们在 ①中可以通过建立动态缓冲池链表[7-8],一旦网络上有数据传过来,就将数据从网卡上第一时间取出堆放在缓冲池链表中,链表另外一头匀速的将缓冲池链表数据释放出,传给解码部分。仿真设计源平均3秒产生一个I帧,当链表的长度超过设计长度(根据虚拟网卡缓存大小),将有以下几种机制对策:
鲁棒优化(Robust Optimization):
设定当链表的长度超过本机网卡缓存限制或当前套接字缓冲限制或I帧结点个数大于5个,则将链表单元上所有帧都丢弃,直到最后一个I帧结点,并将其改为链表新头,这种优化方法在仿真环境可能的最大的完整图像延迟为(3×5) 15秒。
指数退避优化(Exponent Retreat Optimization):
设定当链表的长度超过本机网卡缓存限制或当前套接字缓冲限制或I帧结点个数分别大于 ,则将链表单元上所有帧都被销毁丢弃直到最后一个I帧结点,并改为链表新头。这种优化方法在仿真环境可能的最大的完整图像延迟为[3×(1+2+4+8)] 45秒。
源流控制优化(Source Streaming Control Optimization):
数据源头定期会接到接收端发送的反馈状况报告,相应做出判断与当前接收方库存容量和消费速度匹配的发送机制:如果库存容量超过设计阀值,并且消费速度大于系统设计基准速度,则源头可以根据系统性能做动态缩减码流带宽,推迟关键帧出现,以及主动丢弃一个时间片单元的图像数据,等等,从而降低源头对后端网络模块和处理模块的压力;如果库存超过设计阀值,但消费速度小于基准速度,可以选择不做源头的调整, 仅提高前端发送状况报告的频率。
P帧I帧调节优化(P Frame I Frame Regulation Optimization):
设定当链表的长度超过本机网卡缓存限制或当前套接字缓冲限制或I帧结点个数大于设定阀值的个数时,销毁这些I帧中间的所有P帧“参考帧”。这种优化方法存在多跳,每一次跳跃跨一个关键帧时间段(仿真环境为3秒),但经过处理依然尽可能的保存图像信息的完整性。
QoS application:
通过指定服务类型RTSP 和RTP/RTCP来改善在传输信道中和实时图像传输有关的数据传输优先级,从而尽可能的将传输信道资源用于图像信息负载 (属于数据通讯中的实现范围,这里不进行详细阐述)。
3.4 多用户
当存在连接用户非常多(上百)[6],前端的无线网络肯定是无法承受一对多的点对点模式,需要通过多处分流的无线接入,同时根据系统容量,设计多个可以级联的视频转发服务器[5]。但如果是在纯粹的局域网中,也可采用组播方式建立通讯共享视频数据[4],这样能有效的控制总体延迟和个体间时间差,也能把对视频服务器的一部分压力转移给网络设备去承担。
3.5 无线局域网传输方式的多样化讨论
①如果要实现的系统需要实时性强,但图像内容精细度要求不高,且整体结构简约,可考虑采用UDP进行音视频数据的封装,因为传输时可以通过RTP应用层协议确保数据的有序性和同步性。当数据量大时(并发数据量超越网络中交换机的转发能力)或无线网络信号时强时弱,甚至中途无线接入设备断电或被移除。在网络自恢复后,图像实时传输也可快速自恢复,特别是采用默认的非阻塞方式传送音视频数据,可以大大减少个别接收端故障对整个系统造成的负面压力影响。
该模型的优化空间依然很大,这里做几个简单的优化模型例子[8]:一个是为了减少二次数据协议封装带来的带宽浪费,可以在先建立一条面向连接的连接通路,这条通路好比是高速公路,然后将所有数据通过这个TRUNK发送。另一个是建立分布式的树形转发机制,尽可能让每个点的负荷和通讯效率趋近于更优化组合(通过压力测试和计量统计取得平衡点数据),同时也可实现对数据冗余备份,提高视频传播的可靠性。
②如果目标系统需要图像质量好,尽可能减少图象信息丢失,且需要数据流局域网透传,特别是无线网络的信号强弱变化剧烈时,单从应用协议上排列和同步数据,数据的错误率依然会较高,此时建议采用TCP 进行封装为好,RTP/RTCP确保数据的双重有序性和同步性。不过,Connect数量的递增对系统的负荷会呈指数型递增,并且,一旦网络被切断,需要重新建立连接来恢复视频通道,都需要增加轮训守护机制确保自动重连的实现。另外,如果目标是个别接收端的故障不会对整个系统造成不稳定影响,需要结合多线程和传输组织策略来进一步改善。
4 结论
网络传输视频,如果所有传输媒介都是无线局域网,那么系统容易受到外界环境的影响,特别是距离和隔断物。如果无线只是作为接入方式,而点间传输最终要流经广域网,除了带宽资源非常有限外,而且由于中间路由时常变化。这样,实现一个有限网络资源的实时稳定无线视频浏览系统就具有较高的商业价值。而今,无线网络的长足发展,更离不开对有限资源的优化运用。
参考文献:
[1] Microsoft DirectX9.0 SDK . www.microsoft.corn,2006-12-11.
[2] 陆其明.DirectShow开发指南[M].北京:清华大学出版社,2003.
[3] 802.11 Wireless Networks: The Definitive Guide, 2/e.Matthew S. Gast. O'Reilly,2006-4-1.
[4] 熊利祥.基于SIP的视频会议系统设计与实现[J].武汉理工大学学报.2009-08-05.
[5] 钟礼秋,马争.基于DirectShow的MPEG-4监控系统的设计与实现[J]. 电子科技大学学报,2007(1).
[6] 杨格兰,曹理宇.多路视频远程传输系统的设计与实现[J].湖南工程学院学报(自然科学版),2006(1).
[7] Advanced Programming in the UNIX Environment. W.Richard Stevens, Stephen A.Rago . Addison-Wesley.2005-6-27.
[8] Unix Network Programming, Vol.1:The Sockets Networking API,Third Edition. W.Richard Stevens,Bill Fenner, Andrew M. Rudoff,Richard W.Stevens . Addison Wesley/Pearson.2003-12-24.