贾长云,陶祥亚,杨 成
1淮海工学院信息中心,江苏 连云港 222005;2江苏师范大学信息传播学院,江苏 徐州 221009
随着计算机网络技术、多媒体技术、计算机视觉和模拟识别技术的发展,各种以数字化、智能化为特点的网络教学系统应运而生。网络教学相比传统教学模式,更能培养学习者信息获取、加工、分析、创新、利用、交流的能力。网络教学通常是通过教学视频广播、视频点播、视频答疑、Web教材、多媒体课件、BBS论坛、聊天室(教学讨论区)、E-mail等内容和方式来实现教学目标的教学形式。网络教学系统在教学内容呈现和工具手段施行过程中,在传者和授者之间有大量的数据需要处理和传输,选择什么样的数据传输技术将决定网络教学系统数据传输的效率和网络教学的效益。依托IP多播技术和SUN公司提供的JMF(java media framework)开源多媒体开发包能设计出对等的、基于IP多播的、远程网络教学数据传输系统,可满足网络教学多流、大数据的要求。
该技术可实现用户终端到一个“主机组”的IP数据包的传送,主机组是由零个或多个用同一IP目的地址标识的主机集合。它是一个对等多播系统,系统实施时所使用的目的地址通常由一个D类地址(224.0.0.0 ~239.255.255.255)和使用相同多播地址的所有主机构成一个主机组。主机组是开放的,任一主机均可自由加入或退出,它不必知道组内其他主机是否存在,这符合远程教学的特点。与传统的点到点模式(如TCP/IP协议)单点播送相比,大大减轻了网路负载,提高了数据的传输效率,特别适合于网络教学“流”式资源数据的传输,有利于网络教学中常用的数据资源(包括不同格式的图片、视频、音频等)有效的、可靠的传输和在传输系统两端的实时显示。另外,IP多播技术是标准的IP网络层协议的扩展,多播的数据包被传递到目的主机组的所有成员,同常规单点传输IP数据包一样可靠,主机组中的成员在位置和数量上都没有限制,一个主机组可同时是一个以上主机组成员[1]。
JMF是由SUN公司开发的专门用于处理视、音频媒体的扩展应用开发包,它集成了对视、音频的采集、编码、传输、播放等功能。JMF包括JMF API和RTP API两个部分。JMF API主要由一些接口组成,这些接口定义了用于捕捉、处理和播放媒体对象的行为和交互。使用JMF API能方便地开发用于实时媒体数据的捕捉处理、存储的小程序和应用程序,并在已存在的框架上集成新的功能,从而实现新的解决方案[2]。RTP API是一种提供端对端传输服务的实时传输协议,用来支持在单目标广播和多目标广播网络服务中传输实时数据,而实时数据的传输则由RTCP(实时传输控制协议)来监视和控制,RTCP用来监视服务质量和传送有关参与者的信息,RTP和RTCP协议是配合使用的,它们能有效地反馈和以最小的开销实现传输效率最佳,RTP通常是通过UDP协议进行传输的,需要发送的多媒体数据块(声音或视频)经过压缩编码处理后,先送给RTP封装成为RTP分组,然后再装入UDP用户数据包,并向下递交给IP层[3]。
为满足网络教学系统多流、大数据的要求,在网络教学平台建设时可在底层利用IP多播和JMF技术设置“多播文件分发、多播图片传输、多播实时流媒体处置和多播在线交流”四大传输功能模块,它们的功能设计目标分别如下[4]。
2.1.1 多播文件分发模块 文件分发模块利用IP多播技术实现了任何类型办公文件(.txt、.doc、.pdf、.xls、.ppt等)的传输和接收组装,并且根据文件类型的不同,通过程序语句能调用操作系统中相应的软件来实时打开显示这些办公文件。
2.1.2 多播图片传输模块 图片传输模块能实现任何格式图片(.bmp、.jpg、.gif、.png 等)的传输和接收组装,并且能根据图片的实际大小、图片名称组成新的窗口来实时显示所传输的图片。由于Java不支持后缀名为.bmp格式的图片的处理,故得不到.bmp格式图片的高度和宽度,该研究将通过程序语句调用操作系统中的打开图片软件来实时对后缀名为.bmp格式图片的打开显示,而对于后缀名为.gif格式的动态图片,传输系统在接收显示后仍然能动态显示。
2.1.3 多播实时流媒体处置模块 利用该模块能对网络教学常见类型的流媒体文件(.mov、.wav、.au、.mpg、.mpeg等)进行处理,再利用 IP 多播技术和JMF技术即可实现对流媒体多媒体文件的分发接收功能。
2.1.4 多播在线交流模块 在线交流是网络教学系统的最基本功能,多播在线交流模块能实现组内成员间(各教学主体、各网络教学班主持人和参与者)的聊天通信。该模块在应用时首先需要给参与者起个用户名用于表示在多播组内的身份,然后加入多播组,就可在线交流。多播在线交流模块的数据传输形式和常用的QQ网络聊天平台不一样,该在线交流系统不是发给某一个确定的人,而是通过IP多播技术发给组内的所有成员。
根据上面所讨论的功能模块的设计目标和多播对等设计的思想,网络教学数据传输系统的系统结构如图1所示。
图1 多播网络教学数据传输系统结构图
网络教学数据传输系统四个模块涉及的“文本、流媒体、图片及信息”均为网络教学执行过程中的重要信息载体,该类资源数据以“库”文件数据和实时数据两种形式存在着。系统结构图的每个功能模块的实现步骤相似:学习者申请加入某功能模块的多播组,注册并提交网络学习需求→传输系统依托网络IP多播和JMF技术读取文件流模式网络教学资源数据,封装数据到UDP数据包并传输向网络→学习者终端接收并组装教学资源数据→根据预先申请加入的模块功能显示教学资源数据,传输系统进而完成网络“学与教”资源数据的传输任务。
案例具体内容及实施过程:在网速为10 Mbps到桌面的局域网上,传输一段480MB的MPEG-4格式的流媒体教学视频数据资源,教学视频接收学生终端数120人,以“IP 多播 +JMF、UniCast、BroadCast通信技术”三种模式进行对比实验。
“Unicast模式”需要对120个学生端分别发送一份480MB的视频资源,对校园网络带宽占用非常大,客户端资源下载速率只有约4Mbps,网络有阻隔现象发生。若网络教学多媒体资源数据量和用户数的进一步增加,网络阻隔、停滞现象会更加严重,该模式不适合网络教学中大数据流多媒体资源的传输。
“Broadcast模式”只对120个学生端发送一份480MB的视频资源,所有学生客户端都必须停下手中的工作,需要独立检查数据流向,学生客户端的CPU处理资源占有较多,占用高达近5Mbps的带宽,客户端资源下载速率只有约3Mbps。若网络教学多媒体资源数据量和用户数的进一步增加,对网络带宽的占用和学生客户端的CPU处理资源占用会更加严重,甚至会出现客户端死机现象,该模式不适合网络教学中大数据流多媒体资源的传输。
“IP多播+JMF模式”只对120个学生客户端组发送一份480MB的视频资源数据包,学生客户端资源下载速率可达8Mbps,对网络带宽和学生客户端CPU处理资源的占用都比较少,是多媒体网络环境下网络教学多媒体大数据资源传输的最佳方式。
该研究中关键模块代码是用Java语言和SUN公司提供的JMF开发包进行开发的,包含有Java编程、IP多播网络应用、JMF包应用、多线程技术等多类知识[5]。根据传输数据类型的不同,关键模块代码套接字可分为面向连接的字节流套接字TCP Socket和无连接的数据包套接字UDP Socket两种类型。考虑到利用Windows Sockets API编程的繁琐,该研究采用了MFC封装的CAsyncSocket和CSocket类成员函数来进行关键模块代码设计,具体内容如下:
3.2.1 加入多播组 学习者申请加入多播组功能模块只需要一次,故需要将相关的“加入”代码先行存入多播组类的构造函数中,而可以反复利用的UDP包仅需一个即可。
try{socket=new MulticastSocket(port);
ChatGroup=InetAddress.getByName("226.1.4.5");socket setTimeToLive(255);
socket joinGroup(ChatGroup);buffer=new byte[1000];
datagram=new DatagramPacket(buffer,buffer length);}
上述语句实现功能:定义由端口号构造的多播组套接字,得到多播组IP地址,设定多播UDP包的传输范围,将学习者终端机器加入多播组,定义UDP数据包的大小,规范接收端UDP包的具体形态。
3.2.2 资源端(或教学资源发送端) 初始化一个UDP Socket。调用 CAsyncSocket的 Create(0,SOCK_DGRAM,0),SOCK_DGRAM指明该 Socket为 UDP套接字,教学资源端的iEvent参数为0,表示不需要得到任何事件发生的消息。
设置IP多播数据包能通过的路由的数目。调用CAsyncSocket的 SetSockOpt(IP_MULTICAST_TTL,&nTTL,sizeof(int),IPPROTO_IP)函数,通过设置 TTL的值来设置IP多播数据包能通过路由的数目,在同一网段中应设为“1”,每经过一个路由则相应增加“1”。
设置IP多播数据包的LoopBack参数。调用CAsyncSocket的 SetSockOpt(IP_MULTICAST_LOOP,&nLoopBack,sizeof(int),IPPROTO_IP)函数,设置 IP多播数据包的LoopBack参数。若nLoopBack为TRUE,则允许 LoopBack应用;若 nLoopBack为 FALSE,则不支持LoopBack。
向IP多播地址发送数据包。调用CAsyncSocket的 SendTo((char* )pGsmBuffer,GSMBF_SIZE,(SOCKADDR*)&DestAddr,sizeof(SOCKADDR))。pGsmBuffer表示的是要传送的数据包buffer,DestAddr是目的地址。
向IP多播地址发送数据包结束。调用CAsync Socket的Close()函数关闭套接字。
3.2.3 数据接收端(或学习者端) 初始化一个UDP Socket。调用 CAsyncSocket的 Create(nGroupPort,SOCK_DGRAM,FD_READ),nGroupPort是 IP 组播所用的端口,SOCK_DGRAM指明该Socket为UDP套接字,FD_READ表示在套接字得到数据时能得到反馈信息以便于在数据载入时程序能自动转入OnReceive()函数。
套接字地址绑定。bMultipleApps参数首先设置为TRUE,然后调用CAsyncSocket的函数SetSockOpt(SO_REUSEADDR,(void*)&bMultipleApps,sizeof(BOOL),SOL_SOCKET)。
学习者加入到指定的IP多播组。调用API函数 SetSockOpt(m_hSocket,IPPROTO_IP,IP_ADD_MEMBERSHIP,(charFAR*)&m_mrMReq,sizeof(m_mrMReq)),IP多播组学习者终端地址定义在m_mrMReq结构中。
当学习者终端得到资源发送端的IP地址和端口后,通过OnReceive()回调函数接收数据。int nError=ReceiveFrom(m_strBuffer,str_size,m_str SendersIP,m_nSendersPort);其中m_strBuffer为接收数据的缓冲区,m_strSendersIP和m_nSendersPort为得到的教学资源发送端的IP地址和端口。
退出IP多播组,终止教学资源数据接收进程。调用 API函数 SetSockOpt(m_hSocket,IPPROTO_IP,IP_DROP_MEMBERSHIP,(charFAR*)&m_mr MReq,sizeof(m_mrMReq)),然后调用 CAsyncSocket的Close()函数关闭套接字。
IP多播与JMF技术在网络教学数据传输系统的应用要重视:利用IP多播技术及其相关的多播协议,充分建立对等IP多播模型,完成好多模块的划分和集成,以便于实现多模块间的通信和协调;应建立UDP包封装分发和接收组装的关键协议代码,充分研究、应用流媒体知识和JMF包中JMF、JAR的技术;应根据不同文件类型实现对不同类文件的调用和显示,开发者应强化对多线程编程和并发控制知识的学习。另外,在接收端的UDP数据包和发送端的数据包形式不同,接收端的UDP包只起一个容器的作用,程序代码为:DatagramPacket datagram=new Data-gramPacket(buffer,buffer length);发送端的 UDP不仅是个容器,它还封装了目的地和端口号,程序代码为:DatagramPacket dg=new DatagramPacket(buf,buf length,ChatGroup,port)。网络教学用多媒体文件一般都有多个轨道,每个轨道都应该建立会话地址,并且一个轨道对应两个端口,不同类型的多媒体文件都用自己的格式,在得到数据源后要根据不同格式来调整到标准格式。
流媒体文件是网络教学主要的资源数据流,利用IP多播技术、JMF技术及其RTP/RTCP协议对流媒体处理类的设计应做好对处理器类,RTP管理器,视频格式类,格式控制类和监听接口的设计,关键代码如 下[6]:public abstract interface Processor extends Player{};public abstract class RTPManager implements Controls{};public class VideoFormat extends Format{};public abstract interface FormatControl extends Control{};ControllerListener{},ReceiveStreamListener{},SessionListener{}。
网络教学的高质量需要依靠高效率的数据传输技术支撑,基于IP多播与JMF技术的网络教学数据传输系统基本功能可实现:多播组内成员聊天;图片分发并根据图片大小实时显示;文件分发并根据不同类型的文件调用系统的相应软件实现实时显示;流媒体播放,实时接收播放并且不需要安装播放器。图1系统还可以通过增加模块,利用摄像设备作为数据源,就可实现视频会议功能。在目前教学信息资源以几何量级日益丰富的E-Learning时代,受限于有限的网络带宽条件,IP多播与JMF技术在网络教学数据传输系统中必将会得到广泛的应用,也将会有很好的应用前景。
[1]邹炼,陈淑珍.IP Multicast在多媒体远程安全监控系统中的应用[J].计算机工程,2001,(8):122-124
[2]蒋海鸥,王之怡,薛原.基于JMF技术的网络视频监控的研究与实现[J].网络安全技术与应用,2007,(8):86-88
[3]周元哲,袁玲.基于JMF技术实现流媒体格式的转换[J].西安邮电学院学报,2005,(7):92-94
[4]刘成德,李祥.基于IP MulticastJMF的多媒体网络会议系统的设计与实现[J].计算机与数字工程,2007,(3):132-134,140
[5]林毅,方路平,曾燕.IP Multicast技术在远程教学系统中的应用[J].计算机应用,2001,(8):50-51
[6]吴敏强,周俊,朱晴波,等.一种基于RTP/Multicast的流媒体传输系统设计[J].计算机工程,2004,(9):162-165