苏征远,易 燕,赵庆江,戴祖诚
(昆明学院 物理科学与技术系, 云南 昆明 650214)
随着云计算、物联网技术的兴起,特别是3G技术开始在我国广泛应用,使人们随时随地接入互联网,享受24小时在线的服务成为可能。同时为了满足人们对于更高质量影音感受的要求,多媒体信息处理技术正在以前所未有的速度迅猛发展,各种数字视频技术已经被应用于大众的日常生活中[1]。随着社会经济建设的需要,各种定制化、功能各异的嵌入式设备大量出现,不仅方便了人们的生活,也为各种技术应用找到了新的领域。现在,各种通信设备特别是智能手机等嵌入式终端设备的不断出现,使得基于多媒体的应用能够实现,如可视电话通信、网络实时手机会议、终端视频监控等[2]。
目前,基于TCP/IP的互联网视频点播已经成为了流行趋势,无论是技术还是制度上都正趋于成熟,各项标准也正逐渐开始建立。但是网络视频还都是在PC上观看,而对于屏幕狭小、网络连接不稳、资源有限的移动设备来说,如何设计出符合嵌入式特点的流媒体播放系统成为了在线视频播放是否能够在移动设备上成功的关键。移动流媒体播放系统中,处理器和操作系统必须紧密配合,系统应该具备视频硬编解码能力、网络视频传输和调度、能够自动控制流速率等强大功能[3]。随着3G网络的进一步覆盖,网络质量的不断提高,基于3G网络的移动流媒体播放系统应用前景非常广阔,正成为行业新的利润增长点之一。
互联网是IP分组交换为基础进行连续的异步传输,待各个分组到达目的主机后再根据分组序列进行组包,但对于在线音频、视频文件,往往其所在存储空间很大,在网络中传输需要被分解为很多IP包,又网络状态甚至网络拓扑都是动态变化的,每个包经过的路由可能不尽相同,所以到达客户端的时间延迟也不尽相同,有时候先发的数据包还有可能后到。由于这个原因,必须使用缓存技术来弥补时间延迟和网络抖动的影响,最大程度保证数据包可以按正确的顺序排列,从而使多媒体数据不间断地连续输出,减小因为网络暂时拥塞而使播放出现停顿的影响。一般,每个多媒体流所需的高速缓存容量并不庞大,再者高速缓存一般使用环形链表数据结构进行实现,不会出现溢出的情况;通过丢弃已经无用的、播放过的片段,将后续尚未播放的内容覆盖之前的内容就可以使高速缓存循环利用[4]。
如图1所示,现在比较流行的移动流媒体播放过程一般如下:用户打开嵌入式流媒体播放软件选择某一流媒体资源后,此时流媒体播放软件会通过3G网络连入互联网,与对应的流媒体服务器之间使用HTTP协议交换数据以及控制信息,向用户呈现实时的多媒体播放信息,用户可以进行检索播放;当用户选中某一多媒体文件播放时,流媒体播放软件使用HTTP链接从流媒体服务器获取多媒体文件的相关参数,并对播放终端初始化。这些参数包括资源的位置信息、多媒体数据的编码类型、以及流媒体服务器的相关参数。最后,流媒体播放开始,此后流媒体播放终端会和流媒体服务器周期性地交换状态信息,以便更好地进行播放。
图1 流媒体工作原理图Fig.1 Working principle diagram of streaming media
完整的流媒体播放系统分为两个部分:1)提供流媒体服务的流媒体服务器;2)终端流媒体播放软件。对于流媒体服务器,只给出其实现流媒体服务所必须实现的关键技术,而终端流媒体播放软件笔者给出了软件的整体架构以及进行编程实现的具体技术。
文中所设计的基于3G网络的流媒体服务运行于Windows Server 2003操作系统上,提供的流媒体服务综合使用多种流行的流媒体技术,主要有如下6个:
1)DirectShow技术
微软DirectShow基于DirectX技术,是微软Windows平台上的流媒体主要开发工具。DirectShow可以支持多种格式,其中,视频有:高级流格式 (ASF),活动图片专家组格式(MPEG), 音频-视频交叉格式 (AVI), 音频有:MP3格式和WAV文件格式等。DirectShow捆绑了各种DirectX技术,会自动侦测和利用视频和音频硬件进行加速,同时也支持没有硬件加速的系统。如图2所示,DirectShow使用一种叫Filter Graph的模型来管理整个数据流的处理过程,按照功能Filter可以分为3类:Source Filters,主要负责获取数据,其中数据源可以是视频文件,或者是视频采集卡WDM和VFM驱动的图像采集设备等;Transform Filters,主要负责数据的格式转换,例如音视频数据流的分离/合成,解码/编码等;Rendering Filters,主要负责将最终的数据传递给显卡以及声卡进行多媒体的播放,或者输出到多媒体文件进行最后的存储。
2)MPEG-4编码技术
图2 DirectShow的Filter Graph模型Fig.2 Filter Graph Model of DirectShow
MPEG-4的全称是Moving Pictures Experts Group(动态图象专家组的英文缩写),是基于对象的运动图像压缩编码标准,其核心算法是运动补偿预测以及带有DCT的帧内变长编码,并使用了可扩展的时间和空间分级编码技术,使用者可以根据编码端的网络状况动态地选择和调整编码算法,以使编码速率依据网络带宽状态动态变化,所以MPEG-4标准极适用于Internet上的多媒体传输,支持从5 kbit/s到10 Mbit/s的宽范围比特率。现在,MPEG-4标准在移动终端平台上得到了广泛应用,并成为了3GPP组织制定的PSS规范中指定的多媒体编解码标准之一。
3)多速率编码技术
多速率编码技术[5]是指将指定的多媒体数据解编码为多个独立的、不同速率的数据流的技术。当进行多媒体流数据传输时,从多个不同速率的数据流中选择最接近但不大于网络传输带宽的数据流进行传输。通过对多媒体数据流的多速率处理和选择,可以在一定程度上适应网络环境的变化并消除3G网络带宽不稳定带来的不利因素。
4)RTP/RTCP网络传输控制技术
RTP是为传输音频、视频等数字多媒体等实时要求较高的数据而设计网络传输协议[6]。与通常要求高可靠的数据传输的网络传输层协议相比,RTP则更加注重数据传输的实时性。RTP协议提供了包括时间戳、数据向量、拥塞控制等服务。RTP协议与其传输控制协议RTCP协同工作,一起对数据的传输进行控制,并及时探测并处理3G网络环境的变化。
5)Windows共享内存映射技术
不同线程模块间数据的高效传输与同步是系统性能和可靠的保证,为此我们采用了基于Windows共享内存来映射缓存数据文件,将多速率编码生成的多媒体数据放入共享内存映射文件中,提供给流媒体模块使用,以保证多媒体数据交换的实时与准确。
整个流媒体播放器的软件架构如图3所示,共分为4个大的模块:
1)用户界面层 采用Qt库实现,完全的面向对象设计,界面易扩展,各种功能使用插件的形式完成;主要负责界面各种按钮的消息捕获、处理,完成播放器所有功能窗口的创建、销毁以及管理,当出现软件有错误发生时,向用户返回友好的错误提示。同时,播放在线流媒体的时候,可以显示当前播放媒体的状态信息。
2)媒体适配层 主要负责向GUI模块提供底层无关的流媒体播放API接口,与GUI交换媒体数据,以及响应用户在GUI上的操作,控制下层模块进行实际的执行。
3)状态控制模块 主要负责通过3G网络协议与互联网服务器进行交互,接收相关媒体信息;通过RTSP协议与流媒体服务器交互,得到流媒体数据与控制信息;之后,根据3G移动设备本身的特点进行预处理。
4)核心模块 主要负责音视频的分离,以及调用移动设备的编解码芯片进行音视频的编解码,并实现音频、视频的同步输出。
图3 终端流媒体播放软件架构图Fig.3 Architecture of terminal streaming media software
随着通信技术的突飞猛进,3G通信网几乎覆盖了我国所有城市,人们对在线视频播放的兴趣也越来越大。“online anytime,surfing anywhere”,3G时代的来临使这一切成为了可能,也标志着未来互联网的发展方向。作为3G应用中的热门,移动流媒体技术将会被广泛研究和推广,成为用户体验3G网络的流行手段。
[1]岑斌,肖刚,程振波.流媒体技术综述[J].中国有线电视,2003(22):29-31.CEN Bin, XIAO Gang, CHENG Zhen-Bo.Streaming media technology overview[J].China Cable TV,2003(22):29-31.
[2]潘瑜青,张健,郭培源.流媒体中的Qos控制[J].微计算机信息,2008,24(1):256-257.PAN Yu-qing, ZHANG Jian, GUO Pei-yuan.Qos controlling in the streaming media[J].Microcomputer Information,2008,24(1):256-257.
[3]尹逊钰.流媒体技术的发展与应用[J].广播电视信息,2001(10):40-42.YIN Xun-yu.The development and application of streaming media technology[J].Radio and Television Information,2001(10):40-42
[4]李锌.无线流媒体服务器的设计与实现[J].北京工业大学学报,2006,32(5):122-126.LI Zi.The design and implementation of wireless streaming media server[J].Journal of Beijing University of Technology,2006,32(5):122-126.
[5]赵进,叶梧.基于RTP协议族的流媒体系统设计和实现[J].计算机工程,2005,31(2):195-197.ZHAO Jin,YE Wu.The design and implementation of streaming media system based on RTP[J].Computer Engineering,2005,31(2):195-197.
[6]LEI Zhi-jun,Nicolas D.Georganas.Video tramscoding gateway For wireless video access[C]//Canadian Conference on Electrical and Computer Engineering,2003(3):1775-1778.