前言
直播是一个庞大而复杂的业务形态,一个优秀的直播系统涉及众多团队的共同协作,有非常完整的直播链路。
那么,直播链路中都有哪些角色?这些角色要解决的是哪些问题?要优化某个环节时需要哪些角色的配合?这些角色优化链路的手段有哪些?……
想要厘清这些问题,对直播全链路接触比较少的同学无疑要花费大量的时间才能完成。本文将从直播拉流切入,力求帮助有兴趣的同学简单明了而全面地理解整个直播链路。
为什么直播拉流是“最后一公里”
从整个直播链路来看,直播拉流作为直播内容触达观众的最后一个环节,从客观现实上来说,就是直播链路的“最后一公里”。
直播拉流作为整个直播链路的“最后一公里”,链路上任何一个前置环节出现问题,都会在拉流过程中体现出来。通过分析、理解拉流过程中产生的各类问题,会是理解直播链路最有效的方式之一。
作为直播内容消费的关键环节,如何优化这“最后一公里”上的各类体验,是每个直播从业人员不断探索的问题,从直播拉流理解怎么做好直播无疑是一个好的选择。
从直播业务理解直播链路
上图所示是从业务层面看到的一次直播观播过程,也是对直播拉流的一个高度简化。麻雀虽小,但五脏俱全,图中显式或隐式地涵盖了整个直播链路几乎所有关键角色和流程。
直播链路上的关键角色
客户端
客户端中囊括了直播链路中多个 SDK,包括直播中台 SDK、直播推流 SDK,以及直播拉流 SDK。
-
直播中台 SDK
- 直播中台 SDK 封装直播间内的所有业务逻辑,能够串联流调度与推拉流 SDK,给推拉流 SDK 提供日志上报、配置下发能力。
-
直播推流 SDK
- 直播推流 SDK 作为提供给中台 SDK 的封装层,提供采集、编码、推流、连麦等能力,响应流调度下发的各种配置,例如推流分辨率、码率、编码方式等端上能力,完成推流过程中各类日志信息的采集并上报至中台 SDK。
-
直播拉流 SDK
- 直播拉流 SDK 作为提供给中台 SDK 的封装层,提供直播拉流相关能力,同时封装了超分、音量均衡等功能,响应流调度、settings 下发的配置,例如是否开启硬解等端上能力,并完成拉流过程中各类日志信息的采集并上报至中台 SDK。
CDN
CDN 全称是 Content Delivery Network,即内容分发网络。CDN 的核心任务是使内容传输的更快、更稳定。
整个直播系统中,源站提供了鉴权、转码、回调、禁播等能力。CDN 通过边缘节点,在客户端和源站之间增加一层缓存,请求过的数据会在边缘节点缓存一段时间。
动态请求内容会直接回源拉取,CDN 优化整个传输链路,解决跨网访问、传输拥塞等问题。
流调度
流调度主要处理与直播流管理相关的任务,内部封装了多家 CDN 供应商,屏蔽了不同 CDN 的细节区别。满足大规模的直播内容分发需求,同时保证了服务的高可用性。提供完整的解决方案,方便业务方快速接入直播业务。
关键流程
直播数据流
直播内容从生产到消费主要涉及到推流端、CDN (源站、边缘节点) 以及拉流端,如图中实箭头所示即为直播数据流方向,其中:文章来源:https://www.toymoban.com/news/detail-401113.html
- 在推流端,推流 SDK 完成了主播的音视频采集,添加美颜、滤镜后,需要经过编码、封装,最终按照指定地址,向 CDN 边缘节点推流;
- 收流边缘节点在被动收到用户的推流请求后,这个节点会主动地将这个流转推(中继)到上层节点,上层节点经过同样的过程,最终将源流转推到源站;
- 源站内部会进一步地将源流转推至其他集群完成转码、录制等任务;
- 在拉流端,拉流 SDK 会根据流地址向 CDN 边缘节点拉流,此时根据这路流在该节点上的缓存命中情况,出现两种结果:
- 如果命中缓存,则边缘节点将直接返回缓存数据;
- 如果未命中缓存,边缘节点将逐级进行回源,最终将流数据返回边缘节点,最终返回播放器。
词语释义:文章来源地址https://www.toymoban.com/news/detail-401113.html
- 源流:推流端推出的那路流。
- 转码</
到了这里,关于最后一公里:从直播拉流读懂直播链路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!