搭建视频网站和搭建普通网站,在技术实现方案上有很大的差别,因此,当有人问我是否可以采用搭建普通网站的方法搭建视频网站时,我会明确的告诉他们不可以,否者就贻笑大方了。
视频网站与普通网站相比具有如下不同:
1)存储数据量大。用于视频存储、缓存的数据量,一般是TB级,需要用合适的技术方法做大数据存储管理,需要有合适的技术方法做好存储设备的高速读写优化。
2)需要的带宽大。普通网站有2Mbps的出口就可以很好地运行,视频网站一般需要上百兆的出口,当并发量较大时,如超过1000,则需要千兆的出口。
3)需要专业的视频技术支撑,包括视频转码、切片、截图、元数据提取、流化的技术,存储缓存和读写复用技术,视频播放技术,视频加速技术,多终端适配技术等。
4)需要良好的网络资源使用优化技术,在同样的硬件和网络条件下,如果使用普通网站的技术,通常几十个并发就很卡顿缓慢,而试用专业的流媒体播出技术,可以在数千并发时依然稳定顺畅。
5)需要的技术团队不一样,普通网站需要网页设计和前后端开发人员,视频网站则同时需要视频技术开发人员。
这道了这些差异,就可以避免犯一些基础错误了,也就不会想着用普通网站去承载视频播出了,下面梳理下视频网站搭建的常规技术路线。
1)服务器主机配置
视频网站的主机,可以使用云主机,也可以使用物理机或虚拟主机。如果是在互联网上运营,则建议使用云主机,选择阿里、腾讯、华为均可。如果在局域网或专网运行,则使用物理机。
主机的配置根据实际的并发需求来做,一般可以按照如下配置:
100并发: 2核CPU,4GB内存,百兆出口
500并发: 4核CPU,8GB内存,千兆出口
1000并发:8核CPU,16GB内存,千兆出口及更大
2)网络配置
运行在局域网或政务网内的视频服务器,可用的带宽取决于既有的网路方案,例如新的校园网或政务网通常是千兆网络,则可以支撑1000以上的并发。
如果是运行在开放的互联网上,采用的是云主机,在选用云主机网络带宽时,不要选用按固定带宽付费,要选择按流量付费,这样会更经济。如阿里云的选择:
在并发量很时,如超过500,通常要使用集群或CDN技术方案,华为云、阿里云都有视频CDN加速技术,可以通过购买流量包来提高并发能力,降低使用费用。
3)流媒体服务器软件配置
流媒体服务器软件(视频服务器软件)是搭建视频网站平台和各类在线视频应用系统的基础支撑系统,实现将视频存储、视频转码、视频播出、协议复用、终端适配、大并发播出等的工作集中处理,这样您在搭建视频网站时就可以只关注业务细节而不用再去处理与视频相关的诸多技术细节,从而实现提高项目实施效率、降低项目实施风险的目标。
目前在市政、高校、科研领域使用最广泛的产品是云视睿博的NTV Media Server G3流媒体服务器软件,由于性能出众,集成方便,支文档和API做的规范而被很多人选用,安装和配置也很简单,可以自己安装,也可以联系客服安装,具体功能不再这里细说,可以参考其帮助文档。
4)播放器配置
播放器要根据播放终端来选用,对于标准的H5网页,如微信页面、公众号内嵌页面、开放互联网上的网站,可使用标准的video标签来播放视频。视频文件放到流媒体服务器上后,经转码后输出播出地址,将视频地址赋值给video标签即可。
video标签的布局、控制等细节,参考相关教程就可以,前端工程师和网页美工可以搞定。
尽管Flash播放器在很多主流浏览器上已经不再支持使用,但对于一些传统单位,内网的办公机器依然在使用IE浏览器,这时候依然需要使用Flash播放器,因此在有些情况下还是需要兼容之前版本IE的。NTV Media Server G3提供的集成代码可以做到这一点,实现对各种浏览器的自动兼容,在新型支持H5的浏览器上使用video标签,在老旧IE上依然加载Flash。
对于APP开发,无论是iOS还是Android,都有丰富的播放流媒体视频的组件,可以方便的播放hls,http-flv和rtmp视频流。
如果视频资源量很少,增量也不多,譬如只有几十个资源,则不需要与流媒体服务器做开发集成,只要把流媒体服务器提供过的视频播放地址交给网页制作人员使用即可。
对于业务较为丰富的应用,如视频资源较多,且经常动态增减,则需要有完整的业务平台支撑,需要实现视频资源自动化发布,这个时候需要网站业务平台与流媒体服务器做集成对接。集成过程一般使用流媒体服务器的如下接口:
视频上传接口-->视频转码接口-->视频查询接口-->视频播放接口等。
NTV Media Server G3的接口很容易集成,一般1周以内可以轻松对接完毕。
对于运营一个视频网站,除了需要上述视频技术,还需要其他技术,梳理一下包括:
1)后端技术,即开发业务后台,可使用Java、PHP等语言;
2)数据库技术,可以选用Mysql,MariaDB,Mongodb等等;
3)前端技术,开发视频展现的网站,需要js、htm、css开发技术,最好使用一个前端框架来简化开发工作,同时需要美术设计人员来设计漂亮的呈现
4)APP、小程序开发技术,根据需要使用
5)视频拍摄和编辑,对于要求较高的宣传类、教育类、科研类视频应用,则需要有专业的摄影和视频编辑