视频服务器这个说法,在机房报价清单和岗位招聘需求里经常出现,但是很少有人能讲清楚它和普通服务器到底差别在哪。普通服务器处理的是一个个独立请求,用户发起页面访问,服务器查询数据库、拼接页面代码,返回内容之后本次请求就结束了。视频服务器处理的是连续数据流,一段视频从播放开始到结束是持续传输的过程,中间一旦中断,画面就会卡顿或者花屏。这个核心差异,决定了视频服务器承担的工作和普通服务器完全不同。
首先它要处理接入和协议转换。摄像头输出的大多是RTSP流,直播推流软件使用RTMP协议,手机浏览器播放需要HLS,低延迟互动场景又依赖WebRTC。这些协议之间无法直接互通,视频服务器需要接收各类流,转换成接收端能够识别的格式再分发出去。没有这一层转换,设备之间没法通信,直接拿摄像头的信号在网页播放基本无法实现。

转码也是没办法跳过的环节。原始视频文件体积很大,一路1080p视频流直接向外推送,大部分用户的带宽承载不了。视频服务器会把同一路源流转码生成720p、480p、360p多个版本,让用户根据自身网络情况自主选择。转码十分消耗算力,如果完全依靠CPU运算,单台设备同时处理少量转码任务就会占满资源,所以现在很多方案采用GPU硬件转码。除了调整清晰度,转码还包含编码格式转换,例如把H.264转成H.265,同等画面质量下能够节省接近一半带宽。
存储层面,视频服务器和普通文件服务器的工作模式也不一样。普通文件可以分批缓慢写入磁盘,视频流是持续不断向硬盘写入数据,几十路摄像头同时写入时,如果磁盘持续写入性能跟不上,就会出现丢帧或者录像片段空缺。视频资料通常需要长期保存,安防录像按照规定有时要留存三十天甚至九十天。一个中等园区数百路摄像头,每天产生的数据量可达数个TB。所以视频服务器一般会配置大容量硬盘阵列,通过RAID机制保障数据安全,还会做冷热数据分层处理,近几天的录像存放在高速硬盘,久远的归档录像放在大容量低速硬盘。
分发环节最考验带宽资源。一场直播可能有几千甚至上万人同时观看,服务器需要把单路源流复制成多路,分别推送给不同用户。当并发观看人数很高,单台服务器带宽不足以承载时,就要接入CDN,将视频流推送至边缘节点,用户就近从节点拉取数据。视频服务器在这里更像调度中心,决定每一路流的推送目的地,以及用户匹配哪一档清晰度。
录制与回放属于核心能力。直播结束之后要支持点播,监控录像需要调取任意时间段记录。视频服务器要一边接收实时视频流,一边切片写入存储设备,同时分发切片数据,多项任务并行运行,对整机调度能力要求很高。回放还支持时间轴检索,用户拖动到任意时间点都可以快速开始播放,背后依靠切片索引和存储布局支撑。
播放适配看着简单,实际落地麻烦不少。不同终端支持的视频格式不一样,老旧设备可能只支持HLS,新版浏览器偏好DASH,低延迟互动场景则要用WebRTC。视频服务器要根据用户终端的能力输出对应的清单文件和分片,播放器自行选择适配线路。这个过程还要处理清晰度自动切换,用户网络变差时自动降低码率,网络恢复之后再调高,全程尽量避免画面卡死。
视频服务器还要负责状态监控与故障处理。视频业务最担心断流、卡顿、花屏这类问题。服务器会监控每一路视频流运行状态,掉线后自动重连,码率异常触发告警,磁盘空间快要存满时提前清理旧数据。安防场景还能联动报警和智能分析,移动侦测、越界告警这类功能,有的部署在前端摄像头,有的部署在服务器端。服务器端的优势是算力集中,可以运行复杂度更高的识别模型。
把这些功能整合起来看,视频服务器的核心作用不单单是存放视频,而是承接视频从采集到播放全流程里各类复杂工作。前端设备只负责拍摄,终端用户只负责观看,中间协议转换、转码、存储、分发、录制、终端适配这些工作,全部交给视频服务器处理。它可以是一台独立物理机,也可以是服务器集群或者云服务,核心职责保持不变:保障视频流稳定流畅,按需分发到对应终端。