本文由百度智能云-视频云直播技术架构师——朱晓恩 在百度开发者沙龙线上分享的演讲内容整理而成。内容从低延时直播背景与机遇出发,分析低延迟直播技术,重点分享百度在低延迟直播技术的实践工作。
-
低延迟直播背景与机遇
-
低延迟直播技术分析
-
LSS低延迟直播技术实践
01
低延迟直播背景与机遇
02
超低延迟直播架构解析
RTMP/FLV直播延迟原因分析
低延迟直播方案简单比较——基于UDP
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
03
LSS低延迟直播技术实践
LSS低延迟直播方案设计目标与过程
-
兼容已有直播业务,支持录制、截图、转码、RTMP/FLV等多协议分发。
-
支持百万并发,实现直播的CDN分发。
-
将延迟控制在1s以内。
-
主播首先在主播端通过 LSS 推流 SDK 实现 RTMP 推流 ,在该过程中将实现实时美颜、实时滤镜、视觉特效、硬件加速等功能;
-
视频流会被推到全球智能接流网络中,进而接入 LSS 媒体中心,通过服务器端 SDK 实现实时转码、自动鉴黄、多码率输出、实时水印、实时截图、内容加密、录制点播、统计分析等功能,打通与点播、存储、RTC 等其它云服务产品的联系。
-
接着,通过全球智能分发网络,基于 RTMP/FLV/HLS/WebRTC 等方案将视频流分发到客户端,通过 LSS 播放器 SDK 实现 LSS 播放,在该过程中,将实现首屏秒开、追帧播放、自适应码率、解密播放等功能。
直播场景改造
WebRTC 本身是面向多人会议的实时通信方案,为了使其更好地适用于直播场景,我们需要对其进行一系列的改造,从而支持大规模的低延迟直播分发。
-
就组件协议而言,采用 AAC、H.264 音视频引擎、UDP 传输层协议、RTP 媒体协议、RTCP 数据协议。通过 STUN/ICE 实现建联,并且通过 HTTP 请求实现 SDP 协商。
-
就QoS 方案而言,通过 NACK 的方式实现丢包重传。在播放侧进行基于 Jitter Buffer 的缓冲,在发送侧基于 PACING 机制调整发送的频率和码率,通过 GCC 实现拥塞控制,进而估计并反馈带宽。
-
就具体的改造点而言,仍然使用上行 RTMP 协议,支持非加密传输,音频转码支持 Opus,视频支持 B 帧,实现了 FLV timestamp 透传和 Metadata 透传。
直播CDN支持与质量
请求过程
WebRTC 低延迟方案的请求过程主要分为「媒体协商」、「网络协商」、「媒体传输&信令传输」三个阶段,我们进行的主要改造包括:
-
在媒体协商阶段中,在客户端通过 HTTP API 访问节点,从而携带播放的 URL、SDP Offer。在服务端,获得直播流对应的媒体描述,如果直播流已经存在于节点上,可以直接获得媒体描述,否则将会通过回源拉流来获取媒体描述。此外,会生成并记录会话 token,通过 HTTP 协议相应返回,通过 ice-ufrag 字段对应会话的 token。
-
在网络协商阶段中,通过 STUN 在客户端发起 Binding Request,并在 USERNAME 字段中携带会话 token。这样一来,我们在服务器端就可以通过 USERNAME 映射到 ice-ufrag 字段,从而对应到拉流的进程,返回 Binding Response。
-
在媒体传输 & 信令传输阶段中,实现 RTP 和 RTCP 的复用传输。
往期推荐
?
本文分享自微信公众号 – 百度开发者中心(baidudev)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
{{m.name}}
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/199286.html