你是不是很好奇,为什么你在直播间里说的话,几秒钟后就能被成千上万的观众听到?直播系统开发其实就像搭建一个“视频快递”网络。今天,我们用五个问答,把它的底层原理说个明明白白。

问1:手机是怎么把视频“发”出去的?
答:视频不是直接发送的。你的手机摄像头每秒会拍摄多张图片(帧),系统会像“打包压缩”一样,把这些帧通过H.264等编码技术,变成很小的数据包,再通过RTMP(实时消息传输协议)这种“专用通道”发到服务器上。这就是推流。

问2:服务器收到数据后做什么?
答:服务器就像一个巨大的“中转站”和“分发器”。它把收到的视频流,转码成适合不同网络速度和设备(手机、电脑)的多个版本。同时,它复制出无数个相同的“包裹”,准备发给每一个正在观看的人。这个过程叫转码和分发。

问3:观众是怎么看到画面的?
答:观众端的APP会向服务器发送一个“我要看”的请求。服务器收到后,就会把之前准备好的视频“包裹”,通过HLS(HTTP直播流)或FLV(Flash视频格式)等协议,源源不断地推送到你的手机上。你的手机再解压、解码这些数据,还原成连续的图像和声音,你就看到直播了。

问4:为什么能“实时”互动?
答:为了减少延迟,系统采用了“低延迟”技术。比如,它不再等一整段视频下载完,而是“边收边放”。同时,像聊天、点赞这类轻量级数据,会通过WebSocket这种“即时通讯”通道,走另一条“快车道”实时传送到所有观众端。

问5:最核心的难点是什么?
答:是“卡顿”和“高并发”。当几万人同时看一个主播,服务器不能“堵车”。开发人员需要设计巧妙的负载均衡算法,把流量分散到多台服务器上,并且根据观众的网络状况,动态调整视频的清晰度。这就是为什么你在弱网下会自动切换到“流畅”模式。