在部署使用Open edX的过程中,一个普遍的问题是:视频放在哪儿?

Open edX本身并不是设计来存储视频的。edX本质上提供了一套学习工具和学习过程,而一些比较专业化的资源是置于外部的,比如视频以及机器学习、自动评分等等。

CMS中有提供文件上传功能。如果你的edX仅仅是提供给少数人用的,你也可以把视频放到这里,并在视频模块中输入相应的链接。你需要考虑的是edX主机的空间是否足够存储视频;视频播放带来的cpu内存损耗能否能让edX代码正常的运行;edX主机的网络带宽能支持播放多少并发?

在公网上的edX可以直接购买视频云服务,例如腾讯云、阿里云等。服务商保证了视频的可用性和播放速度,也不会对edX主机的性能造成影响。还可以根据视频的需求扩展资源。如果不想在视频投入成本,也可以使用@wwj的优酷视频Xblock。当然,会有优酷广告(没有免费的午餐)。

有几种场景需要搭建内网视频服务器来配合edX:

内网是和外网隔离的,用户不能使用外网视频云。

内网和外网链接的速度有限,而且内网有足够的计算存储资源用来存储视频。

只希望视频资源在内网可访问。

一般这种场景出现在教育机构和大型企业中。此时应该搭建专门的视频服务器。

目前最常见的视频播放格式就是FLV和MP4。对应的有flash播放器以及HTML5播放器。

由于flash播放器的兼容性以及未来flash技术的前景,不建议选择这种格式。

根据上面链接的资料,H264格式是受支持最广的,所以一般应该用这个格式来编码课程视频。

比较简单的方案,自行搭建Nginx来提供视频播放。

Nginx中有一些和视频相关的模块:

可见ngx_http_flv_module和ngx_http_mp4_module都是为了flash播放器而准备的,主要都是提供了视频定位的功能,让flash播放器可以直接定位到视频中的时间点,根据指定的参数start。所以这两个模块如果不用flash播放器就无需安装。其中pseudo-streaming是一种伪流技术,实现了服务器端和flash播放器之间的通信。

ngx_http_hls_module提供了对于HLS的支持。HLS是苹果定义的一个基于HTTP的流媒体传输协议,可实现流媒体的直播和点播。如不打算用HLS对课件进行编码,这个模块也可以不装。

对于一个机构内部的在线课程视频服务,需要经过计算来确定视频集群的数量。这里给出一个比较粗放的计算方法。

其次确定视频的码率,几种常见的码率:

以720p为例,同时并发200人,并发流量为200*1024kbps=204800kbps=204mbps。再综合考虑服务器磁盘性能和网卡性能,对应交换机的性能,估算出需要什么规模的视频集群。