高压缩比网络课件的生成及传输研究
摘要:从高校普遍实际使用的演讲型课件特点出发,设计了一套全新的网上教学系统,用可以人工动态控制的PowerPoint文档来取代MPEG-1的视频格式,并将教师的讲解声音用G.723.1算法来压缩从而得到一种新的流媒体格式课件,满足了在窄带网络上的实时传输。
关键词:网络课件;压缩;PowerPoint;G.723.1算法
Abstract: Colleges and Universities from the universal use of the actual characteristics of speech-based courseware, has designed a new web-based teaching systems, manual can be used to control the dynamic PowerPoint document to replace the MPEG-1 video formats, and teachers on the use of voice G.723.1 compression algorithms in order to get a new format for streaming media courseware to meet the narrow-band network in real-time transmission.
Key words: Courseware; compression; PowerPoint; G.723.1 algorithm
1 应用背景
随着教育事业的不断发展以及网络的不断普及,网上教育应运而生。但是,网上教育也面临着巨大的挑战,课件制作是其中的一个关键所在。网上教育是多媒体结合的一种教育,多媒体意味着文件数据量大、要求带宽高,尽管高速宽带网络可以从根本上解决这个问题,但其由于各种原因,短期内还不能大范围普及。现有的公众网只能提供33.3Kbps~56Kbps的窄带。所以,在现有的条件下,以保持多媒体质量尽量少的降低为前提,减小多媒体文件数据量的大小, 实现多媒体技术,是比较现实的方法。
本系统设计了一套全新的网上教学系统用来满足在窄带网络上进行网络实时教学的需求。这种课件格式为流媒体格式,可以满足在窄带网络上实时传输,并且在本地播放时可以保留快进,快退等基本的媒体播放属性。
2 系统原理简介
一般网络课件的制作是将教师讲课实况信息录制后作为视频保存。实际上,教师授课时每堂课一般只需30个左右的PowerPoint幻灯片,屏幕上的画面变化非常小。基于此,我们设计了一个新的方案:将课件中的各种信息分开来传输,而不是象现在的课件那样,将很多的信息合在一起传输。经过分析,可以将课件的内容分为如下几部分: PowerPoint文件(PPT);鼠标信息;键盘信息;声音信息。PPT文件是一个比较小的文件,一般在几百K左右。所以可以设计一个客户机-服务器模式的系统,在服务器端实现对PowerPoint文件的控制,捕获鼠标,键盘及声音信息,将它们封装并传输到客户端;客户端系统接收还原这些信息来控制PPT文件的播放。其中PPT文件是在鼠标,键盘和声音信息之前传输的,实时传输的实际上只有鼠标信息,键盘的翻页信息和语音信息。这些信息的量和视频信息比起来就少得多了,仅过这样的设计和处理,可以实现在窄带上的实时传输。
3 系统的具体实现
为了实现上述的目标,服务器软件需要在服务器端捕获鼠标,键盘及声音信息并将以上三者相同步,而且还可以将这些的信息向网络发送或者将这些信息在本地上保存为一种特定格式的包封文件,其结构如图一所示。同样,客户端程序需要解析从网络传来的服务器信息或播放本地这种特定格式文件。
接下来详细讨论各部分的实现。
3.1 音频的处理
3.1.1 声音的录制与播放
人耳能听到的声音,最高频率是20000Hz,而语音频率一般在4000Hz以下,教师讲课的课件,其音频部分主要是语音。为提高压缩比,本系统只处理了语音信息。
微软公司提供的Direct中的DirectSound组件性能与兼容性比较好。因此,我们选用了DirectX作为开发包,来实现PCM声音的录制与播放。
3.1.2 G.723.1语音压缩
本系统研究的一个重要方面就是高压缩比传输,所以主要工作之一便是选取一个合适的语音压缩算法来压缩教师的讲解声音。
目前语音压缩的算法非常多,本系统选用G.723.1算法,主要是从通用性和效率两方面综合考虑的结果。G.723.1是ITU的一个标准,所以选用G.723.1作为语音的压缩算法,其通用性是可以保证。另一方面,G.723.1的压缩效率可以满足本系统的要求,最终的码率是6.3Kbit/s或5.3Kbit/s。
我们把由ITU组织提供的标准G.723.1算法的源程序改写为一个标准的Win32动态连接库。该库向外导出CG7231Coder和CG7231Decoder 两个C++库,分别实现了G.723.1的编码与解码。实现CG7231Coder类的对象时,只需调用Coder成员函数来进行语音编码。该函数的第一个参数是,指向被编码的PCM数据。该数据是8KHz,16位单声道的30ms的PCM数据,共480个字节。该函数的第二个参数是,用于接受当前被编码后的压缩数据,因为我们固定采用了6.3Kbit/s的比特率,所以该参数所指的缓冲区应为24个字节。经过我们改写后的G.723.1的编码算法具有以下特征:低通滤波,噪声平滑,恒定的6.3Kbit/s比特率。我们可以通过相关参数变量来改变上述特征。解码器也具备同编码器一样的功能
ITU组织提供了G.723.1的算法有两种实现形式:整点和浮点。整点算法比较简单,易于实现,但是整点算法对计算机的硬件要求极高。而浮点算法的速度远远高于整点算法,所以在本系统中使用了浮点算法,这样,服务器软件可以在配置较低的机器也可以正常运行。
3.2 视频的处理
通过前面的分析可知,在设计中我们取消了视频,采用直接控制PowerPoint Viewer程序来播放教师所用的PPT教案,所以系统的视频部分是建立在Microsoft公司的PowerPoint Viewer软件基础之上的。PowerPoint Viewer本身是一个独立的应用软件,其主要功能是用来播放由Microsoft公司PowerPoint软件制作的幻灯片。我们现在所设计的系统是一个课件的生成工具,同时它也可以实现网上的实时授课。它之所以和PowerPoint Viewer联系在一起,是因为本软件利用了PowerPoint的PPT文件作为教师的电子教案。
在用PowerPoint Viewer程序播放PowerPoint文档时,教师可以通过鼠标和键盘两类控制信息来控制该文档的行为(例如:向前,向后翻页)。下面将分别讨论这两类控制信息的接管控制以及对PowerPoint Viewer的控制。
3.2.1 键盘信息的处理
在教师的讲课过程中, PowerPoint文档是以幻灯片模式来播放的,而且对它的控制行为并不是很多,一般只有简单的向前翻、向后翻页,缩小或放大播放窗口,结束放映等控制动作。基于上述考虑,我们通过设计了一个类库来控制PowerPoint Viewer程序前后翻页,而不是通过PowerPoint Viewer的默认控制键(例如:通过空格键,鼠标左键向前翻页)。
该动态连接库向外提供了一系列函数用来控制Power Point Viewer程序。
在获得PowerPoint Viewer进程中用来播放PowerPoint文档的窗口句柄后,将发送到播放窗口的消息作了两方面的改变。一是将默认的PowerPoint Viewer的键盘控制消息改变为其他的PowerPoint Viewer不可以识别的键盘消息,实现了对PowerPoint Viewer的键盘屏蔽。另一方面将自定义的消息改变到PowerPoint Viewer可以识别的控制命令,实现了所谓的客户程序可以控制PowerPoint Viewer的行为(例如:前后翻页等)。最后,我们还将安装一个动态连接库到PowerPoint Viewer进程的内部,通过对PowerPoint Viewer进程的内部控制,实现了鼠标的控制以及播放窗口的全屏与窗口模式之间的切换、窗口的移动;PowerPoint文档的前后翻页;以及在播放窗口的指定位置中绘画用来代表教师教鞭的鼠标及鼠标右键的快捷菜单。
3.2.2鼠标消息的处理
首先,我们来看一下鼠标消息在默认的PowerPoint Viewer程序中有什么样的作用。在Windows的程序设计中,鼠标器可以产生三十多个消息,但是通过分析研究发现, PowerPoint Viewer程序只是处理了几个鼠标消息-—WM_LBUTTONDBLCLK、WM_LBUTTONDOWN、WM_LBUTTONUP、WM_RBUTTONDOWN。上述的几个鼠标消息的默认动作行为有三种:一是激活PowerPoint文档的播放窗口,二是使得PowerPoint文档向下翻一页,三是弹出一个快捷菜单以供用户选择。
鼠标消息与键盘消息,我们将其分开处理,这样做是因为:第一,如果对鼠标消息也采取与处理键盘消息同样的方法,会严重地影响系统性能;第二,对于鼠标消息,我们需要用自己的快捷菜单来替代PowerPoint Viewer的默认右键菜单,这只能通过内联代码来实现。
我们在嵌入到PowerPoint Viewer程序之中的动态连接库内对鼠标消息进行截获,加入一些代码来改变播放PowerPoint文档窗口的默认消息处理过程。这样做的好处是:可以直接在播放窗口中响应鼠标消息,完全控制PowerPoint Viewer的播放窗口,而不必考虑进程间通信的问题。
3.3网络实时服务的实现方案
通过Windows下Socket编程,我们实现了服务器端和客户端网络模块的软件。该类对象在每30ms时间间隔内会通过网络向外广播,客户如果接受该信息者可以在网上实时听课。因为通过计算可知每包的大小为33个字节,服务器在30ms内广播有关包,因此可以算出其课件流的速率为33×(1000/30)=1100(Bytes/sec)=8.8Kbits/s。8.8Kbits/s的速率在当前公共网上基本都可以得到满足。
4 系统性能分析
服务器端完成之后具有以下功能:
能提供多种服务方式,可以向网络广播已生成的课件;教师可以通过网络进行现场实时授课,与此同时还可以把讲述内容录制成包封格式的课件;在不提供网络的条件下,教师可以在本地制作课件,以便以后学生可以通过课件播放器来观看学习。
服务器端在得到了教师的讲解声音和PowerPoint Viewer的控制信息后,它们的同步误差控制在0.5秒内。
服务器生成课件的速度快。局域网下进行网络传输时,帧的延时不超过1秒。
服务器还有一定的网络监控功能。进行实际的网络授课时,服务器还提供在线学生管理以便教师可以了解当前的学生情况。
客户端软件完成之后具有以下功能:有两种学习方式-网络教室和本地文档,可供选择。其中网络教室用来连接远端的服务器。
5 结论和进一步的工作
总之,在目前网络传输速度较慢,还不能够完全满足各种媒体信息畅通无阻的在网上传输时,本系统尽可能的减小了所用媒体文件的大小,对学校教师经常采用的PPT这种演讲型课件来说,是行之有效的办法。下一步的工作就是考虑课件中加载更多媒体文件时的情况。多种媒体文件的应用使课件更加生动有趣。但是在网络中,数据量较大的媒体文件,本文来自辣文论文网http://www.751com.cn兴趣。想在网络课件中加载更多媒体文件,需要在保证可视质量前提下尽可能提高压缩比,更可行的办法是提供可选择性的服务,使得用户根据自己的网络环境选择是否加载某些服务。相信在不久的将来,高速网普及后,数据量问题不再是束缚网络课件制作和发展的因素。
参考文献:
1.鲁士文.计算机网络协议和实现技术[M].北京:清华大学出版社,2000
2.精英科技.网络协议大全[M].北京:中国电力出版社,2001
3.李腊元,李春林.计算机网络技术[M].国防工业出版社,2001
4.黄永峰.因特网语音通信技术.人民邮电出版社,2001.
5.龚祥国.演讲型网络课件制作技术[J].中国远程教育,2002;7:56~58
6.曹晓东.减小网络课件数据量的几个方法[J].中国医学教育技术,2001;15(3):183~712