DTSE Tech Talk | 第 11 期:深入浅出畅谈华为云低时延直播技术
本文分享自华为云社区《DTSE Tech Talk | 第11期:深入浅出畅谈华为云低时延直播技术》,作者:华为云社区精选。
本期直播主题是《深入浅出畅谈华为云低时延直播技术》,华为云媒体 DTSE 技术布道师杨金文,与开发者们交流华为云低时延直播的核心优势和关键技术,从直播最为关注的时延、首屏、卡顿率三个指标详解了华为云低时延直播在体验优化方面的技术方案,并向大家介绍了华为云低时延直播的快速接入方法。
延时降低到 800ms 以内,提升用户体验
随着虚拟直播、自制综艺等在线直播新浪潮的涌现,直播平台的内容生态日渐丰富,满足观众多元化需求。就在 2021 年,也就是低时延直播发展元年,国内各大知名电商平台逐步使用低时延直播进行精品商品秒杀、派发红包等活动方式,提升了在线观众的观看时长和平台的交易额,进一步挖掘了直播的商业价值,低时延为直播提供了更多应用场景的可能性。
华为云低时延直播产品基于华为近 30 年音视频技术积累,在传统直播的基础上,通过对传输协议的优化、传输链路的动态智能优选、超低时延的转码等技术手段,将传统直播 3-5s 的时延降低到 800ms 以内,满足电商直播、教育直播、赛事直播等时延敏感业务的诉求,为观众提供低时延、流畅的极致直播观看体验。
相比传统直播,华为云低时延直播的关键技术总结为以下三点:
• 静态的树状分发架构演进为动态智能网状架构
• 标准转码升级为超低时延转码
• 最后一公里 UDP 传输协议改造升级
目前,业界直播普遍采用边缘、中心、源站三层架构:
边缘一般采用运营商的单线机房部署,目的是为了更低的成本,更广的覆盖,满足主播与观众的高并发、就近接入的诉求;中心采用多线机房部署,起到流汇聚收敛的作用;源站构建在大云之上,提供高可用的源站增值服务,比如转码、录制、截图、审核等功能。
动态智能网状架构,通过用户地域信息,在满足流媒体用户体验情况下,权衡全局资源的调配,为用户选择最优接入节点以及最佳回源路径,提高整个流媒体平台的平稳与可靠。
以图中三个用户场景的访问路径为例:
观众 1:与主播位于同省份,同运营商,智能调度服务将观众 1 的访问调度到主播推流节点,内部链路短带来了高质量,低成本的极致体验。
观众 2:与主播位于同运营商邻近身份,智能调度服务将观众 2 调度至最优的边缘节点 C 拉流,而边缘节点 C 回源到推流节点 B 获取直播流。
观众 3:与主播跨运营商,智能调度给出传统逐级回源的方式,保障访问质量。
为保障转码流 E2E 保持低时延,转码时延也需要向低时延方向演进。基于华为云在编解码方向的长期技术积累,目前能够控制转码额外引入的时延在 150ms 以内,并且低时延转码同样支持高清低码技术,能够在同等画质下,降低 30%的直播码率,进而降低带宽成本;同时支持画质增强,ROI 增强技术,对画面边缘及纹理区域做精准处理,有效提升用户的主观观看体验
核心竞争力,全方位打造低时延直播体验
从核心竞争力角度来分析,华为云低时延直播具有以下几大优势:
• 超低时延端到端时延:< 800ms
首帧时延:< 400ms
低时延转码:< 150ms
• 超高并发 2000+国内加速节点,500+海外加速节点,华为云大部分节点均是各省份骨干线路上的优质节点,节点带宽储备能力≥100Tbps,重点项目将对项目诉求可进行重点覆盖。
• 极致体验支持 2K、4K 超高清直播
• 兼容直播兼容传统直播系统架构,支持 RTMP 协议推流,无缝支持直播转码、录制、截图、审核、回调等功能,同时支持标准 WebRTC 协议,对于私有协议接入也仅需要升级播放器 SDK,接入更加简单
• 成熟稳定支持跨 AZ 多 Region 容灾,7*24 小时服务支持,可用度 99.99%。基于华为多年音视频技术的积累,在内部研讨会直播中已稳定商用
时延优化
• 选择低时延的上行编码参数。
• 适当减小视频 GOP 大小。
• 下行 UDP 传输协议改造,减少分发时延。
动态追帧降时延方案:
• 实时优先启播时,服务端从当前 GOP Cahce 中 I 帧开始发送,此时与直播点有一点时延,当服务端收到下一个 I 帧时候,为了保证低时延,直接跳到下一个 I 帧开始发送。
• 流畅优先启播时,根据客户端快启缓存大小,服务端快速发送 Cache 数据,然后根据网络质量进行快启发送保护,最后按照倍速发送追上直播点,配合客户端倍速播放能力,做到流畅播放和低时延的平衡。
• 拥塞丢帧当网络出现拥塞时,根据帧解码优先级(I>P>B),优先丢弃 B 帧,如果此时带宽依然有限再适当丢弃 P 帧,当下一个 I 帧到来时,择机跳到新的 GOP 发送。
首屏优化
首帧优化有以下关键措施:
• 私有 UDP 信令
压缩标准 sdp 信令在一个 MTU 大小内,通过一定的冗余发送策略,确保信令请求成功率不变的同时,大幅减少信令协商的耗时。并且可使用 UDP 信令承载 STUN 报文,实现 0RTT 启播。
• 支持异步回源
对于不命中缓存的场景,可以减少一个网络 RTT 的信令等待。
• 关闭媒体加密
对无加密诉求的直播内容,关闭加密传输,减少 DTLS 协商耗时。
• 首帧快速重传
对于音视频的解码关键数据(比如 VPS/SPS/PPS),提前冗余发送,减少重传的耗时影响。在信令中携带首包序号,以便客户端快速发送丢包重传请求。
• 首帧快速出帧
启播时客户端将前几帧在 JitterBuffer 中等待时间调整为 0,配合服务端启播时快速下发数据的策略,做到快速出帧,达到秒开效果。
• 起播码率优化
端云协同,客户端将本地探测的带宽数据和网络情况携带在请求 URL 参数中,发送至服务端,服务端则根据该数据进行动态调整起播发送策略。
• 端口不通,快速降级
在 UDP 端口不通的情况下,支持 WebRTC 降级到使用 TCP 进行媒体传输;或者降级到普通直播(FLV),确保观看成功率。
基于以上关键的优化方案,结合华为云海量的节点覆盖以及智能调度策略,将平均首屏时延降到 400ms 以内。
卡顿率优化
基于以下优化方案,确保在毫秒级时延指标下,卡顿率指标优于传统直播:
• 丢包重传
针对低时延直播场景(比如乱序,大丢包),基于网络 rtt 和 jitter 优化重传时机,防止重传风暴,提高重传效率。
• 带宽估计
基于延时和丢包优化带宽估计算法,判断网络模型及可用带宽,控制发包速率与纠错方案。网络质量优时,可以快速上探带宽;网络拥塞时,精确收敛发送带宽。
• 动态 JitterBuffer
实时统计网络丢包率、rtt、jitter 等指标,动态计算所需要的 jitterbuffer 大小并进行实时调整。
• FEC 冗余
自研高性能 FEC 算法,对分组分包进行优化,并且根据网络带宽、丢包率进行自适应冗余调整。同时支持 WebRTC 标准的 RED 冗余,以及 Ulpfec/Flexfec 方式。
• 平滑发送
根据网络带宽估计模块计算的发送码率将音视频数据均匀发送到网络传输通道中,避免网络拥塞。
华为云低时延直播集成方式
详细的对接步骤:
• 登录华为云官网注册华为云账号,并完成实名认证。申请和备案低时延直播的推流和播放域名。
提示:可以注册备案一个一级域名(如 example.com),然后使用两个不同的二级域名(如 live-play.example.com 和 live-push.example.com)作为低时延直播的推流域名和播放域名。
• 添加低时延直播推流域名和播放域名到视频直播服务。
• 在低时延直播的推流域名和播放域名添加成功后,视频直播会分配对应的 CNAME 地址。这里需要在域名 DNS 服务商处为低时延直播的推流域名和播放域名配置 CNAME 解析,开启直播推流加速和播放加速。
• 在低时延直播的播放域名中关联对应的低时延直播推流域名,否则将会导致低时延直播播放失败。
• 获取华为云低时延直播对接文档和 Demo 样例,学习文档并集成低时延直播 SDK。
• 安装推流工具(推荐使用 OBS),进行低时延直播的推流。
• 使用华为云低时延在线 Demo 或集成低时延直播 SDK 的端进行播放验证。
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/e9c20489f2a4c7f1fece25c72】。文章转载请联系作者。
评论