摘 要: 随着多媒体通信技术的不断发展,移动学习(M-Learning)在现代远程教育中占据越来越重要的地位。针对流媒体服务器的传输系统,分析了流媒体传输协议、RTP承载H.264压缩视频数据的包格式和组包策略,移植并搭建了一种基于Live555视频点播的移动学习平台。转换现有教学资源的视频格式,并部署到该平台中,可以满足学习爱好者对移动学习的迫切需求。
关键词: 移动学习;流媒体;H.264;实时流协议
建设浙江开放大学,是要把终身学习数字化公共服务平台建设成为统一架构、整体部署、多功能、开放式和工具型的信息平台,并构建信息系统运行、开发、使用和管理的良好环境,为各类学习者提供方便、灵活、个性化的学习环境;为全面推进继续教育和终身教育体系建设,加快建设人人皆学、处处可学、时时能学的学习型社会提供有效的平台技术支撑。
随着网络技术与通信技术的迅速发展,移动数字设备(如智能手机,平板电脑等)具备了较强的多媒体处理能力,拥有高分辨率、高色彩数的显示屏,支持音视频的播放及各种娱乐、办公、学习等应用软件扩展功能,同时还可通过移动通信网络实现无线网络接入。而终身学习平台如果仅仅依靠台式电脑和电视作传播媒介正面临极大的局限性,已无法满足广大学习者对“人人皆学、处处可学、时时能学”的需求。
针对个性化学习的需求,移动学习应运而生。移动学习是指利用无线移动通信网络技术以及无线移动通信设备(如移动电话、个人数字助理PDA、Pocket PC等)获取教育信息、教育资源和教育服务的一种新型学习形式[1]。学习者只要拥有智能终端和无线网络就能进入学习环境,充分体现学习的便捷性、教学个性化、交互丰富性等特点。它的出现不仅给人们带来观念的转变,还会改变传统的学习模式,教材将由纸质书本向电子文档、教学视频转变,学习场地也由教室向各个能连接网络的场所延伸。移动学习流媒体服务器正是在这背景下的技术产物,让学习者通过智能终端网络接入,进行教学视频资源的点播学习。基于此,本文移植并搭建了基于Live555的开源视频点播系统。由于Live555良好的设计非常容易扩展对其他格式的支持,能快速、有效地搭建流媒体服务器服务于移动学习平台。该系统使远程教育的接入途径更多、覆盖面更广、提供了更便捷的学习方法,以吸引更多的学习爱好者,激发他们的学习欲望。
1 流媒体服务器传输系统
流媒体服务器与移动终端是通过RTSP(Real Time Streaming Protocol)建立连接,通过RTP(Real Time Protocol)网络传输协议将多媒体数据封装后发送到网络,并用RTCP(Real Time Control Protocol)协议进行QoS控制。主要的流媒体协议栈如图1所示。
客户端首先向服务器发送包含了点播文件的URL(Uniform Resource Locator),连接服务器端的RTSP端口,建立RTSP连接。具体交互过程如下:
(1)客户端发送Option消息请求,服务器端响应所支持的所有交互的方法信息。
(2)客户端发送Describe请求(主要包含流媒体名字、解码器类型、视频分辨率、解码能力等描述),服务器对Describe请求作出响应,发送必要的媒体参数(即SDP文件,包括媒体名、帧速率、编码类型、传输协议等)。响应成功后会话进入INIT状态。
(3)客户端发送Setup请求,其中包括协议集和端口号(或者是端口号的一个范围)。服务器从中选择一个协议和端口,然后作出应答。启动成功后会话进入READY态。
(4)客户端发送Play请求,请求消息主要是播放媒体的起始时间。服务器启动RTP包发送线程并发送多媒体数据。此时,会话进入PLAYING态。
(5)在播放过程中,客户端可随时发出Teardown请求关闭会话,服务器端响应后关闭连接,停止传输。
1.2 多媒体数据传输
RTP协议是IETF在1996年提出的、适用于实时数据传输的新型协议,由实时传输协议RTP和实时传输控制协议RTCP两部分组成。RTP为用户提供连续媒体数据的实时传输服务,主要承载在UDP上,并不直接保证传输的实时性,而依赖底层网络提供的QoS服务来真正达到实时性的要求。而RTCP协议是控制部分,用于实时监控数据传输质量,为系统提供拥塞控制和流控制。在RTP会话期间,各参与者会周期性地传送包含数据包已发送的数量、丢失的数量等统计信息的RTCP包。
在流媒体应用场合,流媒体服务器一方面会周期性地产生发送端报告,该RTCP数据包包含不同媒体流之间的同步信息以及已经发送的数据包和字节的计数,接收端可以根据这些信息估算出实际的数据传输速率;另一方面,接收端也会向服务器发送接收端报告,该RTCP数据包含有已接收数据报的最大序列号、丢失的数据报数目、延时抖动和时间戳等信息。服务器根据这些信息可以估算出往返时延,并且根据这些信息调整发送速率,以改善网络拥塞,或者根据网络状况平滑地调整服务质量[3]。
H.264视频编解码是两大国际标准组织ITU-T视频编码专家组VCEG(Video Coding Experts Group)和ISO/IEC运动图像专家组MPEG(Moving Picture Experts Group)共同制定的视频编码标准。H.264最大的优势是具有很高的数据压缩比率,在同等图像质量的条件下,H.264的压缩比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。良好的压缩技术将大大节省用户的下载时间和数据流量,同时还拥有高质量流畅的图像。经过H.264压缩的视频数据,特别适合在低延时模式下的实时通信应用(如视频会议)的场合和没有延时的视频存储或视频流服务器,也适用在高误码率传输的无线网络中传输视频数据。当前所有的视频应用都可以通过H.264获得高质量地实现,例如数字电视广播、在线视频的存储和点播、3G视频电话等。为了配合3G网络的高传输速度,开发的移动设备流媒体的视频编码格式3GP/MP4,就是采用了H.264视频压缩标准。
H.264定义了视频编码层VCL(Video Coding Layer)以及网络提取层NAL(Network Abstraction Layer),以便能够适应不同的网络结构。VCL中包括VCL编码器与VCL解码器,其主要功能是实现视频数据的压缩编码和解码;NAL则用于为VCL提供一个与网络无关的统一接口,负责对VCL处理后的视频数据进行封装(经RTP、UDP、IP协议逐层封装)后发送到网络。RTP承载H.264视频数据的传输格式如图3所示,可分为两部分:RTP固定包头和RTP载荷H.264视频流。RTP固定包头为RTCP进行相应监测和控制提供了基础,各字段含义如下:V为版本号,P表示包是否有堵塞数据,X表示是否含有扩展头,M表示保留字段可由用户决定,PT表示媒体类型。
组包格式的后半部分是RTP承载H.264视频流数据。组包格式载荷第一字节的各字段含义如下:
F:1 bit,默认值为0,当网络检测到NAL单元中存在比特错误时可将其置1。
NRI:2 bit,为00表示NAL单元的内容不用于重建帧间预测的参考图像;非00则相反。
TYPE:5 bit,指示NAL单元载荷类型。接收端通过判断RTP载荷类型字节来辨识三类不同的载荷结构:单个NAL单元分组、聚合分组、分片组。
流媒体服务器在RTP组包设计需考虑以下几点:
(1)根据IP层MTU的大小,对大尺寸的NAL单元进行分割,可以分别在两个层次上进行分割:视频编码层VCL上的分割和网络提取层NAL上的分割。
(2)一些H.264的NAL单元的大小,如SEI NAL单元、参数集等都非常小,有些只有几个字节,可以将多个这类NAL单元聚合在一个RTP分组中,以减小包头(RTP/UDP/IP)开销。
(3)一般的NAL单元封装进一个包中,即RTP负载中只包含一个NAL单元,NAL头部兼作RTP头部。
2 Live555编译及资源部署
Live555是一个开源、免费、跨平台的视频和音频流方案,实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持,实现了对多种音视频编码格式的音视频数据的流化、接收和处理等支持,包括MPEG、H.264、DV、JPEG视频和多种音频编码。下面介绍live555在win7环境下Microsoft Visual Studio 10.0的编译过程。首先从 http://live555.com/liveMedia/public/live555-latest.tar.gz下载live555工程,利用genWindowsMakefiles.cmd可生成编译器可用的Makefile文件。
(1)修改live\win32config文件中TOOLS32=E:\Program Files\Microsoft Visual Studio 10.0\VC为系统VS2010安装路径,LINK_OPTS_0=$(linkdebug)msvcrt.lib。
(2)新增Makefile设定,修改live\groupsock\Makefile.head文件中INCLUDES=-Iinclude -I../UsageEnvironment/include-DNO_STRSTREAM。
(3)在命令行运行live\genWindowsMakefiles.cmd,相应文件夹下会生成VS能够编译的*.mak文件,如liveMedia.mak、mediaServer.mak等。
(4)为方便编译可新建live\complie.bat批处理脚本,编辑内容如下:
call "E:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
…
cd../mediaServer
nmake /B -f mediaServer.mak
(5) 执行complie.bat脚本编译工程,编译完成后会在相应文件下生成obj文件、可执行文件和lib库,包括libBasicUsageEnvironment.lib、libgroupsock.lib、libUsage Environment. lib、libliveMedia.lib,其中live555MediaServer.exe即为流媒体服务器运行软件。
由于浙江电大在线学习平台使用的视频资源后缀都是asf,属于Windows Media格式,主要适用于PC机上点播播放。为此,考虑到网络传输带宽和智能终端的解码支持,需要将asf文件格式转换为适合流媒体传输的视频压缩标准H.264格式。可以使用Media Codec转换工具来实现,将转换后的文件放于live555MediaServer.exe目录下,客户端即可通过RTSP URL访问到流媒体服务器下的教学资源。
基于Live555的流媒体服务器可以迅速而有效地部署到移动学习平台,作为数字化学习的延伸。通过格式处理后可重用浙江电大原有的教学视频资源,可满足广大学习爱好者对移动学习的需求。下一步的工作是扩展基于Live555的流媒体服务器的用户登录管理、访问权限控制、资源文件管理等功能,进一步完善移动学习平台的稳定性和功能完备性。
参考文献
[1] 叶成林.移动学习研究综述[J].电化教育研究,2004(3):12-18.
[2] 陈国阳.基于RTSP/RTP的嵌入式流媒体服务器设计[J].科技情报开发与经济,2007,17(34):226-227.
[3] 樊珊.基于RTP的H.264视频传输技术的研究[D].济南:山东大学,2008.