直播系统的架构和三大关键指标

在国内错综复杂的网络情况下, 如何构建一个高并发、稳定、低延时的直播系统?在12月21日, 网心科技直播技术负责人李浩做客CSDN网络公开课, 为数百名技术人员现场解答关于直播系统搭建方面的一系列问题 。
李浩总结, 要搭建一个能够为用户稳定提供优秀观看体验的直播系统, 一定要注意三大关键指标, 即卡顿、延时和首屏打开速度 。 而针对目前如火如荼的直播市场, 李浩认为, 无论内容和运营手段如何花样翻新, 如果没有核心技术作为保障, 不能保证这三大指标的合格, 直播平台依然很难取得市场竞争的胜利 。
以下为李浩的课程内容整理:
一.不同直播业态对应不同的技术要求
直播平台细分为各种不同的业态 。 目前主流的几种业态, 分别是秀场类、游戏类、生活类这三种直播 。 此外事件类、互动类、教育类、监控类直播这几种业态也较为常见 。
尽管这些业态里基本上都有10亿级独角兽公司产生, 但每一种业态对系统的核心要求却是完全不一样的:
● 秀场和生活类直播:主播和观众网络环境相对更复杂, 因此核心体验是流畅度, 可以牺牲码率来提高流畅度, 自适应码率、帧率等都是常见的优化手段;
● 游戏类直播:为了保证体验效果, 要求的是高清晰度和高流畅度, 端到端延时可以做出一些让步来换取压缩率更高的编码参数, 容纳更高帧率和清晰度的内容;
● 事件类直播:核心要求是稳定性, 包括高可靠上行;
● 互动类直播:核心要求则是端到端的延时, 为此网络波动时丢弃视频帧等是可以接受的 。
因此需要注意不同的业务形态, 后端所用的技术是完全不一样的 。 如互动类的直播的超低延时方案, 4K和VR这种对用户带宽满载利用率的直播场景, 通用CDN技术可能无法做到覆盖 。
尽管如此, 李浩还是认为现在搭建一个直播系统要远比之前来的容易, 因为大量工作已经被CDN和终端服务商帮忙解决了, 需要自己动手的地方少了很多 。
二.直播系统的核心业务需求
那么搭建直播系统时, 需要重点关注的核心功能都有哪些?李浩对此一一进行了解析 。
A.采集和播放
目前视频的采集已经相对容易许多, 因为手机功能相对完整, 不像PC时代需要面对不同的摄像头驱动, 所以需要核心处理的技术点是网络适配 。 技术人员需要根据自身的网络条件去调整编码参数, 以及多协议的拉流、软硬件的解码、多分辨率追帧等基础需求 。 如果在此基础之上, 还能解决好对缓存的管理、数据同步等高端需求的话, 那直播的整体播放体验就比较流畅了 。
B.分发和媒体处理
分发和媒体处理的工作, 现在除了“特别特别大”的平台, 一般都直接由CDN服务商来解决了 。 因为目前CDN服务已比较完善, 跟直播匹配的一些功能, 如上下线通知、协议转换、弱网传输, 以及像转码、水印、增益、截图、录制这样的功能都已提供 。
C.功能系统
需要直播平台自身核心打造的, 是功能系统 。 除去账户系统, 还有如人气、道具、打赏、支付、抽奖等功能系统都是必备的 。 特别是弹幕功能, 是对直播平台最核心的技术挑战 。 主要是弹幕的发送量会很大, 直播在线人数动辄几十万, 弹幕的发送频率又很高, 1、2秒就会发一条消息, 巨大的广播量对系统压力很大 。 所以一般直播平台都会采取分区的方式来加以解决, 而如何分区, 又在什么情况下合并分区, 以维持合适的人气, 这里面还是有很多逻辑上的问题是要去解决的 。
【直播系统的架构和三大关键指标】D.运营系统
运营系统也非常核心 。 视频的黄反审查, 聊天内容的审核, 还有一键断播、数据统计、质量监控这些都必不可少, 因为一要面对内容监管审查的压力, 其次是要能监测到全国不同区域的质量效果 。
不过李浩指出, 即便是把上述功能都实现了, 也只能说搭建出一个基本可以跑的一个直播产品而已, 需要提升的地方还很多 。
三.直播的关键性技术知识
接下来, 李浩对直播的一些关键性知识进行了详细的解释:
A.视频帧
视频帧其实就是一个一个的视频单元, 视频单元分成三种, 分别叫I、P、B帧 。 I帧可以简单的理解为就是一张图片, 体积也会比较大, B帧和P帧它是一个参考帧 。 对一个直播流来说, 最核心的帧是I帧, 由I帧引申出来的就叫GOP 。 通常在直播上看到的延时, 其实是内部直播流缓存延时, 叫GOP cache 。 对于一个CDN系统来说, 传输延时只是延时的一小部分, 还有一部分是产生在用户流里面的GOP cache 。 所以直播平台如果要降低延时, 首先建议调一下上行流的编码参数, 调低I帧间隔 。

直播系统的架构和三大关键指标

文章插图

B.码率
码率也分三种, CBR、VBR、ABR 。 CBR是固定码率, 可用于保证网络专线带宽是可控的场景 。 VBR是可变码率, 它不好的地方在于, 画面变化剧烈, 它的码率跳变会特别大 。 所以在直播的实际应用中, ABR用的最多, 即在质量和码率上做一个均分, 控制一个平均值 。
C.编码、封装、传输
封装的功能相当于一个桶, 它可以把不同编码格式的音视频装在一起, 好的封装格式是能兼容很多种的音视频的编码格式的 。 编码的功能是把原始数据压缩的更小, 像视频编码这种原始信息量大的, 目前的编码方式已经把信息冗余度做的很低, 如果出现丢帧, 会导致视频的花屏 。
李浩提醒直播技术人员, 一定要了解这些基础知识, 否则你很难理解直播的延迟产生在哪, 以及为什么会发生卡顿 。
四.直播的系统架构
直播系统的架构和三大关键指标

文章插图

对一个直播平台来说, 主播就相当于是一个数据源, 各地不同的观众相当于是订阅者, 其实就是生产者和订阅者模型 。 怎么样把这个生产者生产的信息, 比较高效的送到订阅者手上, 其实就是一个应用层的组播结构, 需要做很多应用层层面的一些考量, 比如中转跳数、网络距离、中转带宽成本和汇聚效果等 。
推流模式就是主播直接把流推到CDN节点, CDN节点经过自己的网页加速, 分发到真正观看的用户 。 直播所有的功能, 像转码水印, 转存截图、转点播, 所有的这种功能, 包括数据统计对外提供一些API, 都会在CDN里面做 。
一家直播厂商可能会选用多家CDN, 或者是有自建的CDN 。 每个CDN最核心的一点, 是怎么在国内这种错综复杂这个网络环境内, 去组一张分发比较快速、容灾性能比较强, 然后相对节省成本的一张虚拟网 。
所以在整个CDN里面, 最核心的就是传输组网, 其次是在于功能系统的健壮 。 一个CDN、一个直播系统做的好坏, 成败其实一部分在于传输的顺畅, 另外一部分在于你是否稳健 。
五.直播的三大核心指标
虽然直播对技术的要求错综复杂, 但李浩还是表示, 直播的关键的指标其实只有三个:卡顿、延时、首屏打开速度 。 做好这三大关键指标, 直播的用户体验就有了保证 。
A.卡顿
卡顿的解决与延时则在一定程度上是矛盾的 。 卡顿产生的原因有三种, 第一是主播上行卡顿, 所有的观众都会卡;第二是CDN内部网络带来的卡顿, 例如中转网络产生了波动, 节点负载没控制好, 或者是一些组网策略出问题, 第三就是被调度和终端网络问题, 好比DSN错配、或者最后一跳网络抖动 。 要有监控手动能发现主要问题点针对性处理 。
B.延时
除了前面说的视频GOP缓存, 其次延迟主要来自累积, 除了做跳帧等逻辑以外, 还可以通过改变传输协议的方法来提高, 对于延时控制要求高的直播业务, 如互动类直播, 根本不会采用TCP这样的协议来做传输, 而会选择UDP协议 。 因为对于这种直播来说, 视频的所有数据都可以放弃, 但要优先保证音频的即时性 。
C.首屏打开速度
首屏打开则考验的是直播CDN的组网方式、网络覆盖率和传输协议的优化程度 。 李浩特别提醒说, 今年对首屏打开速度的要求越来越高, 秒开已经是去年的指标要求, 今年要细化到几百毫秒, 做不到这个级别就没有竞争优势 。 在这一点上, 选择一个靠谱的CDN就尤为重要了 。