实时课堂开发历程实例(1)--课堂框架与开发思路

大家好,我是一个新手,刚刚毕业。2013年6月开始实习,10月开始正式工作。我在一个学校的计算机部门工作,学校不大,计算机部门没几个人,校长又是个不懂技术可又很重视计算机技术的人。在这几个月的工作期间,我一个人用PHP写了一个在线E_Learning系统。没有人教我带我,只有自己上网一点点查资料,从头开始摸索,所以做出的东西必然也很幼稚和不足。

 

第一次开发,没有什么经验,系统的大框架和语言都是设定好的。系统开发的需求也极其模糊和不明确,系统的其他功能没什么可说的,无非就是php和后台的交互,最多是麻烦程度的问题。在开发过程中最让我投入和花心思,也是最有挑战和带给我成就感的就是实时课堂功能的开发。在这里,我就想从头开始,一点点慢慢的记录下我开发的历程,也愿意与大家交流分享。

 

一 实时课堂功能概述

这个功能的想法是校长提出的,源自于多贝网(duobei.com)。多贝网是国内优秀的在线教学分享平台。所以我做的在线课堂完全是仿照当时多贝网实时课堂的样子做的,当然一些细节会有不同。我的实时课堂主要有以下功能:

 

1 教案PPT播放

就是把老师的PPT教案在网上播放。老师可以翻页,老师翻页时,同学看到的页数也实时发生改变。

 

2老师实时讲解

在老师播放PPT的同时,老师可以通过麦克风讲课,同学可以实时听到老师的讲课。整个上课的过程就像老师播着ppt讲课一样,只不过过程可以远程实现。

 

3在线学生列表

老师可以看到同时在线的学生的名单。

 

4学生文字提问

在上课时,学生可以通过对话框发言,就像传统的聊天室一样。老师看多学生留言可以和学生互动。

 

5课堂过程回放

在上完课后,可以立刻生成课堂的回放,回放包括ppt的播放,老师的声音,同学的提问。用户还可以通过时间轴去控制播放。

 

以上就是我的实时课堂的基本功能,由于实时的复杂性,重负载性,这算是一个比较复杂比且要考虑很多的功能了,对于我这个新手来说。

 

二 开发思路

多贝网实时课堂当时的课堂过程是全flash实现的,但是由于我们整个系统框架式php写的,我对flash不熟,flash由于平台的限制,我觉得不是未来的方向等。所以我想尽量不用flash来开发。

首先我们要细分功能,需找思路,找到解决的方向。

 

1PPT实时播放

将老师要播放的ppt转换成一张张图片,然后在老师端可以翻页换页,难点是学生端也实时翻页。其实本质实时同步的数据就是当前老师端正在播放的页码数。这个数据就是一个实数,最初我的想法是将这个实数记录在数据库中,然后学生端采用轮训的方法来实时更新播放的图片。

 

2在线学生列表

学生在线列表会根据学生的进入退出产生,实时的变化。其本质同步的数据是在线学生列表。这个数据就不是一个实数那么简单了,单单用数据库来记录就不那么简单了,所以我采用了用xml来记录。这里涉及到的技术点有php对xml的读写,和用户在线与否的判断。

 

3声音的实时传播

这个功能是我当时遇到的最大难点,我也查了很多资料。首先声音是流媒体,单纯用php或网页语言目前还很难实现。之前试过html5的一下api,没有找到完美合适的。后来还了解过google的开源项目。对于这个探索过程,之后我也会专文详细阐述。总之是由于目前网页功能的限制,所以转向使用比较成熟的流媒体服务器。后来做过一些流媒体服务器的比较,之后也会专文阐述。最后我选择了FMS(flash media server),走到最后还是用flash来传播声音,这是因为flash目前还是在pc段广泛的使用着的原因。既然用到了flash来做流媒体实时传输,加上后来遇到的轮训造成服务器负载过大的因素,对于所有的实时数据包括页数,学生在线列表,学生留言等信息也采用直接使用了fms来完成实时同步了。

 

4学生留言

上面说了,学生留言其实就是聊天室功能,通过ajax刷新。

 

5课堂情况回放

这个问题也想了很久,费了很多脑细胞。问题的解决思路是,首先上课时我们要记录下变化的信息,归纳一下就是老师翻页动作的时间点和变化的页码,学生发言的内容和时间点,还有老师课堂的录音。有了这些记录的信息,我们在课堂结束时,要将对翻页时间和发言时间转化成时间轴记录,就是用xml文件记录下每一秒,要播放的图片页码和同学发言。最后老师课堂的录音自动被FMS记录成了flv格式,所以在线还是做了一个播放声音的flash控制器,这个控制器不但要能控制声音流的播放,同时还要能与php页面产生播放时间的交流以达到声画留言完全同步。这涉及到php与as数据交流的技术问题。

 

以上是真个功能实现的大体思路,涉及了很多,可以做以下大体归纳有以下技术点:

网页图片无闪烁实时刷新,网页声音实时传播的解决方案,流媒体播放器的比较,fms的应用开发,php对xml的操作,ajax聊天室的原理,flash控制flv播放器的制作,as与php的数据交流等等。

 

好了,今天就写到这里,在之后的文章中,我一点一点详细阐述我的开发历程的。

 

 

 

posted @ 2013-12-26 22:30  张天下  阅读(342)  评论(0)    收藏  举报