新知 | 直播架构方案解析及趋势探讨

2021-11-26 18:11:40 浏览数 (1)

‍‍

腾讯云音视频的直播最早是基于QQ音视频能力开发出来的产品,至今深耕音视频领域超过20多年,积累了丰富的音视频和海量服务技术。今天的新知系列课,我们邀请到了腾讯云音视频的技术导师 —— 兰玉龙,为大家由浅入深的介绍一下音视频直播的基础概念以及技术趋势,同时和大家分享一些直播相关的技术以及行业应用,以便大家理解和更加方便地使用直播能力。

接下来的几周,每周四晚上7:30,我们都会在腾讯云音视频视频号、开源中国、InfoQ、51CTO、云 社区等多个平台进行课程直播,大家千万不要错过哦~

- 云直播的概念与基本架构解读 -

关注「腾讯云音视频视频号」,每天有新知

2021年7月29日,刘德华进行了“出道40周年,这平常的一天”直播活动,不卖货,不刷礼物,却刷爆了朋友圈。这一活动吸引了众多粉丝和观众,数据显示,直播总观看人数过亿,同时在线观看人数近400万。除了商业运作的成功外,这次活动背后的直播能力和魅力,也让人惊叹。以前的主播多是网红个人直播,现在越来越多的明星和商家也使用直播与观众互动,体现了直播不可替代的的优势,蕴含了巨大的商机。

数据显示,2020年网络直播用户规模达到6.1亿,网络直播使用率达到62%,呈逐年增长趋势。

直播从最早的垂直领域产品,发展到现在,各行各业纷纷利用直播来提升产品功能和体验。我们耳熟能详的虎牙,斗鱼,快手这些行业翘楚,培养了无数网络红人。很多偏远山区的产品也得以有平台方便的展示和售卖。电商、泛娱乐、办公协同、教育、财经、体育等各个行业都能看到直播的重要作用,视频直播已经成为一种基础能力,广泛为各行各业所用。

在视频直播的场景中,有两个基本的分类,一类是重视视频实时互动体验的互动直播,譬如腾讯会议、企业微信视频等。这类视频应用重沟通,需要超低延时;重音频,画质相对没那么重要,因此需要用极致的技术手段,对抗抖动,降低延时,传输技术栈也多是自定义的私有化协议栈,使用这类产品需要集成SDK,以适配平台的私有协议,同时使用超低码率以应对多个与会者的视频。

另一类就是传统意义上的直播,这种直播观看人数多,画质要求清晰,有时声音显得不那么重要,譬如足球赛事。这类直播要求观看方便,画质清晰,所以技术栈往往使用广泛支持的标准协议,容易接入,使用门槛低。

腾讯云直播属于第二类,不过随着技术的发展,现在两种产品已经没有严格的界限,两边的技术都能互为所用。极致的产品是既方便沟通,又有好画质,又容易接入。但在有限的资源和场景下,产品只能首先满足核心诉求,并尽可能满足其他体验。

云直播可以分为两个界面,客户能看到的用户界面和用户看不到的云端界面。

用户界面包括直播推流和播放使用的手机APP、开源推流工具、播放的APP和浏览器等,还包括云官网看到的云直播控制台。云端界面包括对视频流加工处理的源站服务和做分发的内容分发网络,也就是CDN。

云直播提供服务的方式就是把用户界面和云端连接起来,这样客户的视频流就可以使用云端的直播服务。那云直播是怎么和客户界面对接上的呢,其实很简单,云端的输入和输出为每个客户提供两一个域名(一个推流域名和一个播放域名),客户也申请2个域名,用域名cname的方式将其对接上,那推流就可以推到云端,观看可以从CDN观看,通过控制台和API,还可以控制云端流的加工处理方式,查看主播和观众数据。

一个简单的云直播流程如图,主播通过APP或者开源推流软件以标准的RTMP协议把音视频数据推动到云端的源站,源站根据客户的配置,对流进行加工,然后分发给内容分发网络,供观众拉取观看。

从接流到播放,都可以用开放、标准的RTMP协议完成。早期的浏览器使用flash插件后,能直接用这种协议播放视频流,这也催生了其他平台对RTMP协议的支持,所有目前各平台和开源社区有很多支持这种协议的软件。但随着H5技术的普遍应用和直播的爆发,以及RTMP协议和Flash的自身的局限性,RTMP协议已经不足以满足大家需求,各种私有协议和播放协议百花齐放。就播放协议来说,用的比较多的是FLV和HLS协议。FLV主要使用在播放端,使用HTTP协议传输,简单,穿透性好,延时和RTMP差不多,HLS有浏览器内置支持,普及性好,通过CDN分发,命中率高,节省成本。

前面说了直播基本的流程和协议,但简单的直播并不足以为广大客户提供有竞争力的服务,所以腾讯云音视频开发了丰富的功能以及加速服务。在云端提供各种录制、截图、转码、等媒体处理能力,海量的CDN资源和加速策略,解决流畅问题,应对各种突发;同时提供控制台、API、回调等丰富的控制工具。在终端上,提供覆盖各个平台的SDK方便集成使用。

- 腾讯云直播的技术优势 -

商业化的云直播是个复杂的系统,侧重于分发能力的腾讯云音视频第一个解决的是海量并发的问题,解决海量并发问题的核心思想是分治。云直播系统的设计一开始就是利用分治的思想设计实现的。

首先,对于一个区域或者几个地区,设计一套相对完整和独立的直播源站,具备直播全部能力,抽象出来就是流接入集群负责承接流数据,转码集群负责流的加工处理,状态集群负责维护流接入和流处理任务的状态,调度集群则负责业务逻辑和调度分配相关的工作。这样就形成一个完整的小直播源站。

然后以此系统作为一个Set,在各个地区搭建多个Set,Set之间再通过状态同步,这样,在国内多个地区,以及海外多个国家之间就能互通起来,共同承接海量的客户。即使Set之间互通的专线出现故障无法互通,单Set还是能完成Set区域内的推流和播放,将影响控制到最小。

架构上云直播具备Set平行扩容的能力。资源上,腾讯云储备了海量的云资源,服务器和带宽随时申请,随时获取。再利用腾讯云的容器服务平台, 将模块全量容器化,实现根据负载自动伸缩容。这样架构上支持平行扩容,资源上海量储备加上自动伸缩,腾讯云直播应对海量突发就变得游刃有余,如虎添翼。

云直播的另外一大特点是模板化设计。前面提到,客户只需要将自己的推流域名、播放域名和腾讯云直播的推流和播放域名对接上,就可以使用云直播了。但是云直播的配置非常多,推流、播放、录制、截图、时移、转码等每个功能都有多种选项配置,推流有鉴权密钥、有效时间配置、录制有录制类型、存储地址配置等等,有的配置需要对账号下所有主播生效,有的则需要只对某个具体的主播生效。云直播参考大数据指标系统,采取了维度 模板的设计思想,功能的具体配置参数,集中到一起,配置后保存为一个功能模板,模板可以挂载在你希望生效的维度上,譬如你希望这个模板配置对A域名生效,在A域名下挂载该模板就可以生效。不同的域名可以挂载相同的模板,容易理解,操作简单。

如果问一个行业的特殊协议,谁来实现能使收益最大化,无疑这个角色应该是云厂商。因为云厂商服务最多的客户。为了方便客户接入云平台,腾讯云音视频多协议接入平台支持了多种推流协议,包括RTMPs,RTP,TS,WebRTC等等,还提供SRT, QUIC,RIST等多种加速能力以及客户端SDK。客户可以自研也可以使用我们的SDK, 实现快速的接入和视频传输加速。而且我们还在持续地丰富支持的接入协议。

开源推流工具obs深受广大主播喜爱,就是下载安装、使用比较麻烦。我们推出了云端obs,直接能够在浏览器上通过鼠标操作,能支摄像头采集推流、屏幕分享推流和本地文件推流,推流参数和地址自动生成填充,大大降低推流门槛。

同时还支持云端推流,将任意云端文件以自定义的方式推流,譬如将一个文件循环推流或者将多个文件顺序推流等,任务配置简单,灵活,支持丰富的拉取协议。这个功能将不易判断状态的持续事件变成了一个瞬间事件,非常方便推流测试、离线视频直播等自动化操作场景。

高清低码一直是视频的追求方向,在不降低质量的情况下,降低视频码率,既能节省存储空间,还能降低传输成本。

在此方向上,腾讯自研了极速高清转码产品。其基本流程是先通过机器学习对视频场景进行识别分类,然后针对场景做前处理,提高画面清晰度和去除噪声,接着利用感知编码技术识别重要区域,输送到自研高效编码器,通过多个维度的视频度量和用户反馈来衡量结果并反馈到整个优化链路中,不断调整参数,积累效果。

视频预分析阶段,主要做场景识别和噪声分析,识别出秀场、游戏、体育等场景,噪声类型区分出编码引入噪声和图像噪声。在前处理阶段支持 CPU加速和GPU加速,通过3dnr、vbm3d、cdef等去噪算法去除图像噪声,通过AI算法去除编码引入的毛刺,伪影等编码噪声。利用插帧、去划痕等多项措施使画面清晰、平滑,通过AI识别感兴趣区域,然后利用感知编码技术,将bit放在这些重要区域,提高观感。最后通过自研的高效编码器达到低带宽,高清晰度效果。

腾讯内部多个事业群协同研发了H.264,H.265多个编码器,在2021MSU世界云端转码大赛中,腾讯自研编码器夺得质量速度,质量价格两项第一。腾讯云音视频支持目前市面上的所有主流视频编码标准。腾讯还是AV1标准的发起成员之一,并且在积极参与AV2的标准定制。腾讯在国内第一个推出H.266/VVC编码器,拥有超100多项编码专利。在相同主观质量下,H.266相对上一代编码器,码率能再降低50%。

基于极速高清技术下的视频流,相同主观评分下,能降低30%多的码率;同码率下,主观评分能提高20%以上。世界杯直播采用极速高清后,同等质量下,码率降低50%以上,相当于节省一半的成本。该技术也受到国内直播top客户的广泛欢迎和使用。

- 超低延时直播改造 -

在直播中,延时虽然不是第一位的,但更低的延时无疑会给人更好的体验。HLS一直被人诟病的就是他长达几十秒的延时,当隔壁电视已经在欢呼进球时,你的直播还在发球。

在低延时上,腾讯云音视频实现了CMAF和LHLS协议,通过将原来的大分片改为小粒度分片,并提前生成索引来下发即将生成的分片地址,采用分块传输等技术,降低等待和传输时间。通过实测,利用CMAF能将直播延时降低到与FLV相当,大大低于Dash和HLS的延时。

接近FLV的延时并不是直播的极致,在实时音视频技术中,延时能做到400毫秒以内。借鉴实时音视频技术,腾讯云音视频推出超低延时直播产品——快直播,其延时低于1秒,非常接近实时音视频。该超低延时产品,在电商秒杀、在线教育、秀场直播等场景中大受欢迎。

超低延时直播改造的关键流程段在CDN和客户端之间,对CDN和播放器的交互进行改造。首先是对WebRTC的信令改造。WebRTC信令需要进行tcp连接,sdp、stun和dtls交互,完成后才进行音视频数据传输。交互需要多个rtt,多个协议来回,过程冗长。针对整个交互过程,快直播首先使用udp交互,减少tcp的握手耗时。针对直播场景,不需要加密、穿透,所以去除dtls,精简stun,将sdp和stun合并发送。sdp和stun的文本协议也比较大,传输需要多个rtt,使用二进制压缩替代文本协议,将10k的sdp文本压缩到300比特,在1个rtt内完成。在应答sdp的同时,就开始传输视频数据,让客户端尽快初始化解码器。改造后的WebRTC,1次请求就进行数据传输,大大降低首帧时间。

针对数据传输过程中,腾讯云直播也进行了深入的分析和优化。

由于直播视频流的特性,I帧相对B、P帧要大很多,在遇到I帧时,数据发送发生突发,可能引起链路丢包和重传,从而造成延时。快直播采用令牌桶pacing控制I帧突发,使带宽平滑。其次,对音频、I 、P 、B帧进行分优先级传输,在码率不够情况下,优先传输音频和I帧,保证基本的观看体验。低丢包情况下,使用NACK触发快速重传,高丢包情况下,NACK可能也无法工作,此时使用FlexFec纠错编码进行数据恢复。

除了以上优化,超低延时直播还在追帧、jetterbuffer,SDK封装、转码速度等多个方面进行了深入的优化,以获得超低延时和好的流畅度。

快直播不仅优化了WebRTC传输过程,还扩展了原生WebRTC的能力,使其支持AAC音频,支持H.265编码,还能透传私有数据,支持双向预测帧等多个原生WebRTC不具备的能力,使其能和标准直播无缝对接,无需音频转码,大大方便直播场景的使用。通过实测,超低延时直播的延时能达到200ms,平均在300~500ms左右。

- 基于云直播的新玩法 -

基于腾讯云音视频系统丰富的能力和极致的体验,我们可以组合出很多新的产品,新的玩法。

云导播台

以游戏比赛为例,比赛视角、解说员、选手视角有时要显示在一个画面上,有时又需要切换其中一个显示,这些通过导播台就能方便的完成。导播画面的背后是导播台的控制台,输入区能将各路原始视角收集上来,通过画中画的布局将画面进行按需组合,输出到预监观看效果,效果ok后,再输出到主监控,推给所有观众观看,并能以点击切换输入源的方式,很方便的切换选手视角。云导播台的底层就用了接流能力和流处理能力进行画面叠加和切换,形成要给观众展示的画面,推流到云直播,进行海量的分发和录制。

云转推功能

基于自定义的云转推极大的方便了离线视频转直播的实现。它能通过控制台配置,实现会议视频的定时直播,实现赛事的循环直播,一些客户还用来实现电视剧24小时自动轮播。它还能完成一路直播同时分发到不同的应用中,也能完成自助的录制,直接将视频流拉过来存储到自己的云存储空间。这些操作不需要专业的视频知识,通过Web控制台配置就可以完成。

直播连麦

实时音视频实现的连麦好处很明显,低延时,高封装,但缺点就是私有协议需要集成SDK,协议复杂,难以自定义。而基于标准协议的连麦采用标准的RTMP协议,主播端和连麦端通过RTMP从最近的接入点拉流实现低延时连麦互动,两者的流在云端混流,完成两路画面的叠加,叠加后的流经过CDN分发给观众,既能支持低延时的连麦,还能利用CDN完成海量用户观看,成本低、接入简单。

- 完善的产品与生态 -

云时代从来不是单打独斗,单个PaaS产品也很难形成优秀的C端产品。

腾讯云音视频推出视立方SDK,一次接入,具备全套终端能力,无缝对接美颜特效、实时音视频互动、直播、点播、视频剪辑等PaaS平台,集成方便,大小可控。

一个完整的C端产品也往往需要多个能力组合,以小程序直播卖货来说, SDK或者直播插件完成基本的主播介绍商品能力;与客户的聊天沟通、点赞、弹幕等能力通过集成即时通信IM完成;商品展示、下单交易通过云点播、云函数和云数据库完成,云点播的录制回放让主播不在线也能7*24小时地介绍商品。

同时,丰富的云上IaaS和PaaS平台产品,能按需采购,账号互通,内网互访,集成即用,大大降低开发成本和运营成本。‍

关于新知

随着行业数字化转型加速,线上线下一体化、数字技术与真实世界融合的全真互联时代正加速到来。腾讯云音视频技术导师将在新知栏目中分享在全真互联时代下新的行业趋势、新的技术方向以及新的应用场景与大家共同探索视界,创见未来!

每周四晚上7:30,连续6周,我们将在腾讯云音视频视频号、开源中国、InfoQ、51CTO、云 社区等多个平台进行课程直播,千万不要错过哦~

点击文末「阅读原文」可以前往云 社区,查看往期完整内容

腾讯云音视频在音视频领域已有超过21年的技术积累,持续支持国内90%的音视频客户实现云上创新,独家具备 RT-ONE™ 全球网络,在此基础上,构建了业界最完整的 PaaS 产品家族,并通过腾讯云视立方 RT-Cube™ 提供All in One 的终端SDK,助力客户一键获取众多腾讯云音视频能力。腾讯云音视频为全真互联时代,提供坚实的数字化助力。

0 人点赞