日常刷B站、抖音这类平台,点开视频就能直接播放,不用等到整个文件全部下载完毕,支撑这个体验的就是视频流服务器。简单来讲,它专门用来处理体积庞大的视频文件。普通网站服务器存放网页、图片这类零散资源,视频流服务器要持续处理不间断的数据流,二者承载的压力根本不在一个层级。
视频流服务器核心工作就一件:把完整视频拆成很多小段,按顺序快速发给用户。播放器收到一段就播放一段,同时继续接收后续片段。这个过程好比打开水龙头接水,而不是先把整桶水搬回家再饮用,这种边传输边播放的模式专业名称叫流媒体。服务器要同时维护成百上千个这类连接,每个用户的播放进度各不相同,数据分发不能错乱。

视频流服务器和普通文件服务器还有一处明显差别,它支持视频编码处理。同一个视频,观看环境各不相同,有人用手机4G网络浏览,屏幕小、网速有限;也有人用电脑大屏搭配宽带观看。服务器不能直接把原始大文件推送给所有人,不然手机端很容易卡顿。它需要预先把原视频转成多种清晰度与码率版本,包含1080P、720P、480P。播放器会根据实时网速自动挑选合适档位,网络变差就切低清晰度,网速恢复再切回高清。画质切换过程用户基本察觉不到,背后全靠服务器实时调度。
从使用场景划分,视频流服务器主要分为点播、直播两类。点播对应的是已经保存好的视频资源,像电影、课程录播都属于这类。服务器保存文件,根据用户请求切片分发即可。直播的实现难度更高,视频画面实时产生,主播摄像头采集画面推送到服务器之后,服务器需要立刻完成转码和切片,再分发给大量观众。直播对延迟十分敏感,如果比赛画面延迟过高,别人已经看到进球,这边画面还停留在传球阶段,观看体验会大打折扣。直播服务器要在保障播放流畅的前提下,尽可能压低延迟,控制在数秒甚至更低。
这类服务器能够扛住大量并发访问,依靠的是CDN。视频流源服务器大多只存放原始文件,真正把数据送到用户手上的,是分布在全国各地乃至全球的边缘节点。如果你在北京观看视频,数据直接从北京本地CDN节点下发,不用远程去上海源站调取。CDN节点相当于前置仓库,热门视频提前缓存到节点,用户请求到来就近分发。这样源服务器压力减轻,用户加载速度也更快。视频流服务器和CDN属于搭档,前者负责内容管理、转码工作,后者承担分发任务。
实际部署视频流服务器,有几项硬性指标要考量。带宽排在首位,1080P视频码率按5Mbps计算,100人同时观看就需要500Mbps出口带宽,这还没有算业务峰值。存储容量需求同样巨大,视频本身占用空间大,加上多清晰度版本保存,容量需求是普通网站的几十倍。CPU和GPU选型要看转码需求,如果业务是直播实时转码,缺少硬件加速很难稳定运行。现在不少团队直接采购云厂商的点播或者直播服务,底层就是大规模视频流服务器集群,按实际使用量计费,省去自行运维的麻烦。
如果需求只是搭建小型视频站点,比如存放几十个教学视频供内部员工查看,一台普通云服务器安装Nginx加上HLS模块就能运行。但要是打算做对外公开的短视频平台或者直播业务,就要选用专业视频云方案。从零搭建整套视频流服务器集群,技术门槛和资金成本都会很高。