直播不同于常规直播,因为视频内容是通过互联网实时发送的,通常延迟只有几秒钟。
下图解释了实现这一目标的幕后过程。
步骤1:麦克风和摄像头捕获原始视频数据。数据被发送到服务器端。
第二步:视频数据经过压缩编码。例如,压缩算法会将背景和其他视频元素分离。压缩后的视频会被编码为 H.264 等标准。经过这一步后,视频数据的大小会小很多。
步骤 3:编码数据被分成更小的段,通常长度为几秒,因此下载或流式传输所需的时间要少得多。
步骤 4:分段数据被发送到流媒体服务器。流媒体服务器需要支持不同的设备和网络条件。这称为“自适应比特率流媒体”。这意味着我们需要在步骤 2 和步骤 3 中以不同的比特率生成多个文件。
第五步:直播数据被推送到CDN(内容分发网络)支持的边缘服务器。数百万观众可以从附近的边缘服务器观看视频。CDN 显著降低了数据传输延迟。
第六步:观众的设备对视频数据进行解码、解压缩,并在视频播放器中播放视频。
第 7 步和第 8 步:如果需要存储视频以供重播,则将编码数据发送到存储服务器,观众可以稍后向其请求重播。
直播的标准协议包括:
- RTMP(实时消息协议):该协议最初由 Macromedia 开发,用于在 Flash 播放器和服务器之间传输数据。现在,它用于通过互联网传输视频数据。请注意,Skype 等视频会议应用程序使用 RTC(实时通信)协议来降低延迟。
- HLS(HTTP 实时流):需要 H.264 或 H.265 编码。Apple 设备仅接受 HLS 格式。
- DASH(通过 HTTP 的动态自适应流):DASH 不支持 Apple 设备。
- HLS 和 DASH 都支持自适应比特率流。