在内部网络为edX配置视频服务
2015-12-04 10:17
726 查看
原文地址:http://edustack.org/
在部署使用Open edX的过程中,一个普遍的问题是:视频放在哪儿?
Open edX本身并不是设计来存储视频的。edX本质上提供了一套学习工具和学习过程,而一些比较专业化的资源是置于外部的,比如视频以及机器学习、自动评分等等。
CMS中有提供文件上传功能。如果你的edX仅仅是提供给少数人用的,你也可以把视频放到这里,并在视频模块中输入相应的链接。你需要考虑的是edX主机的空间是否足够存储视频;视频播放带来的cpu内存损耗能否能让edX代码正常的运行;edX主机的网络带宽能支持播放多少并发?
在公网上的edX可以直接购买视频云服务,例如腾讯云、阿里云等。服务商保证了视频的可用性和播放速度,也不会对edX主机的性能造成影响。还可以根据视频的需求扩展资源。如果不想在视频投入成本,也可以使用@wwj的优酷视频Xblock。当然,会有优酷广告(没有免费的午餐)。
有几种场景需要搭建内网视频服务器来配合edX:
内网是和外网隔离的,用户不能使用外网视频云。
内网和外网链接的速度有限,而且内网有足够的计算存储资源用来存储视频。
只希望视频资源在内网可访问。
一般这种场景出现在教育机构和大型企业中。此时应该搭建专门的视频服务器。
目前最常见的视频播放格式就是FLV和MP4。对应的有flash播放器以及HTML5播放器。
由于flash播放器的兼容性以及未来flash技术的前景,不建议选择这种格式。
目前HTML5播放技术比较成熟,但仍存在一些兼容问题,具体可见 http://www.jwplayer.com/html5/
根据上面链接的资料,H264格式是受支持最广的,所以一般应该用这个格式来编码课程视频。
视频版权保护DRM方面,可见这个讨论 http://stackoverflow.com/questions/2983555/is-there-a-way-to-use-drm-on-html5-video,W3C已经提出了EME(Encrypted
Media Extensions)标准,并已经得到支持。不过目前还并不能在HTML5中很方便的进行视频版权保护。
比较简单的方案,自行搭建Nginx来提供视频播放。
Nginx中有一些和视频相关的模块:
http://nginx.org/en/docs/http/ngx_http_flv_module.html
The
It handles requests with the
of a file starting from the requested byte offset and with the prepended FLV header.
http://nginx.org/en/docs/http/ngx_http_mp4_module.html
The
have the
or
Pseudo-streaming works in alliance with a compatible Flash player. The player sends an HTTP request to the server with the start time specified in the query string argument (named simply
specified in seconds), and the server responds with the stream such that its start position corresponds to the requested time, for example:
http://nginx.org/en/docs/http/ngx_http_hls_module.html
The
Such files typically have the
or
可见ngx_http_flv_module和ngx_http_mp4_module都是为了flash播放器而准备的,主要都是提供了视频定位的功能,让flash播放器可以直接定位到视频中的时间点,根据指定的参数start。所以这两个模块如果不用flash播放器就无需安装。其中pseudo-streaming是一种伪流技术,实现了服务器端和flash播放器之间的通信。
ngx_http_hls_module提供了对于HLS的支持。HLS是苹果定义的一个基于HTTP的流媒体传输协议,可实现流媒体的直播和点播。如不打算用HLS对课件进行编码,这个模块也可以不装。
那么不安装附加的组件是否就不可以在HTML5播放器对视频进行时间定位?W3C有一个标准Media Fragments URIhttp://www.w3.org/TR/media-frags/,可以实现浏览器传递时间参数。可以在浏览器输入 课程视频来测试。在视频后面加入不同的参数:
http://cdn.cs50.net/2014/fall/lectures/0/w/week0w-360p.mp4#t=1000
http://cdn.cs50.net/2014/fall/lectures/0/w/week0w-360p.mp4#t=2000
这里http://jsfiddle.net/s6dkZ/也展示了使用js来定位视频时间的方式。
对于一个机构内部的在线课程视频服务,需要经过计算来确定视频集群的数量。这里给出一个比较粗放的计算方法。
首先确定用户数量。这里有几个概念:总用户数/在线用户数/并发数。例如一个学校内部有10000个学生用户,在线用户可能为1000人,同时并发观看视频的有200人。具体的数量关系目前并没有统计数据,需要经过调查及观察,在不同时间段还会有不同的峰值,比如晚上学生下课后观看人数比白天会多得多。
其次确定视频的码率,几种常见的码率:
流畅:码率—256kbps,分辨率—480*360,俗称360P
高清:码率—512kbps,分辨率—640*480,俗称480P
超清:码率—1024kbps,分辨率—1280*720,俗称720P
以720p为例,同时并发200人,并发流量为200*1024kbps=204800kbps=204mbps。再综合考虑服务器磁盘性能和网卡性能,对应交换机的性能,估算出需要什么规模的视频集群。
nginx视频负载均衡 http://nginx.org/en/docs/http/load_balancing.html
在部署使用Open edX的过程中,一个普遍的问题是:视频放在哪儿?
Open edX本身并不是设计来存储视频的。edX本质上提供了一套学习工具和学习过程,而一些比较专业化的资源是置于外部的,比如视频以及机器学习、自动评分等等。
CMS中有提供文件上传功能。如果你的edX仅仅是提供给少数人用的,你也可以把视频放到这里,并在视频模块中输入相应的链接。你需要考虑的是edX主机的空间是否足够存储视频;视频播放带来的cpu内存损耗能否能让edX代码正常的运行;edX主机的网络带宽能支持播放多少并发?
在公网上的edX可以直接购买视频云服务,例如腾讯云、阿里云等。服务商保证了视频的可用性和播放速度,也不会对edX主机的性能造成影响。还可以根据视频的需求扩展资源。如果不想在视频投入成本,也可以使用@wwj的优酷视频Xblock。当然,会有优酷广告(没有免费的午餐)。
场景
有几种场景需要搭建内网视频服务器来配合edX:内网是和外网隔离的,用户不能使用外网视频云。
内网和外网链接的速度有限,而且内网有足够的计算存储资源用来存储视频。
只希望视频资源在内网可访问。
一般这种场景出现在教育机构和大型企业中。此时应该搭建专门的视频服务器。
选择视频格式
目前最常见的视频播放格式就是FLV和MP4。对应的有flash播放器以及HTML5播放器。由于flash播放器的兼容性以及未来flash技术的前景,不建议选择这种格式。
目前HTML5播放技术比较成熟,但仍存在一些兼容问题,具体可见 http://www.jwplayer.com/html5/
根据上面链接的资料,H264格式是受支持最广的,所以一般应该用这个格式来编码课程视频。
视频版权保护DRM方面,可见这个讨论 http://stackoverflow.com/questions/2983555/is-there-a-way-to-use-drm-on-html5-video,W3C已经提出了EME(Encrypted
Media Extensions)标准,并已经得到支持。不过目前还并不能在HTML5中很方便的进行视频版权保护。
搭建视频服务器
比较简单的方案,自行搭建Nginx来提供视频播放。Nginx中有一些和视频相关的模块:
http://nginx.org/en/docs/http/ngx_http_flv_module.html
The
ngx_http_flv_modulemodule provides pseudo-streaming server-side support for Flash Video (FLV) files.
It handles requests with the
startargument in the request URI’s query string specially, by sending back the contents
of a file starting from the requested byte offset and with the prepended FLV header.
http://nginx.org/en/docs/http/ngx_http_mp4_module.html
The
ngx_http_mp4_modulemodule provides pseudo-streaming server-side support for MP4 files. Such files typically
have the
.mp4,
.m4v,
or
.m4afilename extensions.
Pseudo-streaming works in alliance with a compatible Flash player. The player sends an HTTP request to the server with the start time specified in the query string argument (named simply
startand
specified in seconds), and the server responds with the stream such that its start position corresponds to the requested time, for example:
http://nginx.org/en/docs/http/ngx_http_hls_module.html
The
ngx_http_hls_modulemodule provides HTTP Live Streaming (HLS) server-side support for MP4 and MOV media files.
Such files typically have the
.mp4,
.m4v,
.m4a,
.mov,
or
.qtfilename extensions. The module supports H.264 video codec, AAC and MP3 audio codecs.
可见ngx_http_flv_module和ngx_http_mp4_module都是为了flash播放器而准备的,主要都是提供了视频定位的功能,让flash播放器可以直接定位到视频中的时间点,根据指定的参数start。所以这两个模块如果不用flash播放器就无需安装。其中pseudo-streaming是一种伪流技术,实现了服务器端和flash播放器之间的通信。
ngx_http_hls_module提供了对于HLS的支持。HLS是苹果定义的一个基于HTTP的流媒体传输协议,可实现流媒体的直播和点播。如不打算用HLS对课件进行编码,这个模块也可以不装。
那么不安装附加的组件是否就不可以在HTML5播放器对视频进行时间定位?W3C有一个标准Media Fragments URIhttp://www.w3.org/TR/media-frags/,可以实现浏览器传递时间参数。可以在浏览器输入 课程视频来测试。在视频后面加入不同的参数:
http://cdn.cs50.net/2014/fall/lectures/0/w/week0w-360p.mp4#t=1000
http://cdn.cs50.net/2014/fall/lectures/0/w/week0w-360p.mp4#t=2000
这里http://jsfiddle.net/s6dkZ/也展示了使用js来定位视频时间的方式。
视频集群负载均衡
对于一个机构内部的在线课程视频服务,需要经过计算来确定视频集群的数量。这里给出一个比较粗放的计算方法。首先确定用户数量。这里有几个概念:总用户数/在线用户数/并发数。例如一个学校内部有10000个学生用户,在线用户可能为1000人,同时并发观看视频的有200人。具体的数量关系目前并没有统计数据,需要经过调查及观察,在不同时间段还会有不同的峰值,比如晚上学生下课后观看人数比白天会多得多。
其次确定视频的码率,几种常见的码率:
流畅:码率—256kbps,分辨率—480*360,俗称360P
高清:码率—512kbps,分辨率—640*480,俗称480P
超清:码率—1024kbps,分辨率—1280*720,俗称720P
以720p为例,同时并发200人,并发流量为200*1024kbps=204800kbps=204mbps。再综合考虑服务器磁盘性能和网卡性能,对应交换机的性能,估算出需要什么规模的视频集群。
nginx视频负载均衡 http://nginx.org/en/docs/http/load_balancing.html
相关文章推荐
- hdu 4292 Food 网络流
- 从Linux内核中获取TCP数据包到用户程序。
- 重霾锁城 数据中心如何应对空气污染?
- http://blog.163.com/zhaoyanping_1125/blog/static/20132915320120711355117/
- httpclient基础
- Android中获取网络图片的三种方法
- TCP,IP详解,卷一:协议学习笔记之第二章链路层
- 脉络清晰的BP神经网络讲解,赞
- 脉络清晰的BP神经网络讲解,赞
- HTTPS和HTTP的区别
- Nginx配置SSL证书部署HTTPS网站
- CNN网络提取哪层输出作为最后提取的特征为宜?
- iOS 网络与多线程--4.同步Post方式的网络请求
- 《TCP/IP详解 卷1:协议》 读书笔记 第九章 IP选路
- 忘记IP 大热“超级IP”才能大卖
- httpd.conf的配置
- <meta>标签中的name与http-equiv
- eclipse marketplace网络连接失败的解决方法
- iOS-网络处理
- 厦门巨游网络科技有限公司(HOTPOWER)承接游戏UI外包