与传统的流媒体不同,实时直播的视频内容通过互联网近乎实时地传输,端到端延迟通常仅为几秒钟。
下图完整展示了这一流程中各个关键环节的协作方式:

- 第 1 步:麦克风和摄像头采集原始视频数据,并将这些数据发送到服务器端。
- 第 2 步:对视频数据进行压缩和编码。例如,压缩算法会分离背景与前景元素。压缩后,视频按照 H.264 等标准进行编码。经过这一步骤,视频的体积会显著缩小。
- 第 3 步:编码后的数据被切分成更小的片段,每段通常只有几秒钟,这样下载或直接播放时的等待时间就大大缩短了。
- 第 4 步:分割后的数据被推送到流媒体服务器。流媒体服务器必须能适应不同的设备和波动的网络状况,这就是所谓的“自适应比特率流”。也因此,我们需要在第 2 步和第 3 步中以不同比特率生成多份文件。
- 第 5 步:直播数据进一步推送到基于 CDN(内容分发网络)的边缘服务器上。CDN 能够显著降低数据传输的时延,让观众就近获取内容。
- 第 6 步:观众的设备对收到的数据进行解码和解压,并在视频播放器中呈现画面。
- 第 7 步和第 8 步:如果视频需要保存以便回放,编码后的数据会被同步发送到存储服务器,观众可以在直播结束后请求重放。
实时流媒体的标准协议
- RTMP(Real-Time Messaging Protocol):最初由 Macromedia 开发,用于在 Flash 播放器和服务器之间传输数据,现在广泛应用于互联网视频流传输。需要注意的是,像 Skype 这类视频会议应用则会使用 RTC(实时通信)协议,以获得更低的延迟。
- HLS(HTTP Live Streaming):必须搭配 H.264 或 H.265 编码。苹果设备仅支持 HLS 格式。
- DASH(Dynamic Adaptive Streaming over HTTP):DASH 不兼容 Apple 设备。
- HLS 和 DASH 都具备自适应比特率流的能力。
如果想进一步探讨系统设计的细节,欢迎到云栈社区与开发者们交流。
|