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方式。 - 平滑发送
根据网络带宽估计模块计算的发送码率将音视频数据均匀发送到网络传输通道中,避免网络拥塞。
华为云低时延直播集成方式

详细的对接步骤:
- 登录华为云官网注册华为云账号,并完成实名认证。申请和备案低时延直播的推流和播放域名。
提示:可以注册备案一个一级域名(如http://example.com),然后使用两个不同的二级域名(如http://live-play.example.com和http://live-push.example.com)作为低时延直播的推流域名和播放域名。 - 添加低时延直播推流域名和播放域名到视频直播服务。
- 在低时延直播的推流域名和播放域名添加成功后,视频直播会分配对应的CNAME地址。这里需要在域名DNS服务商处为低时延直播的推流域名和播放域名配置CNAME解析,开启直播推流加速和播放加速。
- 在低时延直播的播放域名中关联对应的低时延直播推流域名,否则将会导致低时延直播播放失败。
- 获取华为云低时延直播对接文档和Demo样例,学习文档并集成低时延直播SDK。
- 安装推流工具(推荐使用OBS),进行低时延直播的推流。
- 使用华为云低时延在线Demo或集成低时延直播SDK的端进行播放验证。
DTSE Tech Talk | 第11期:深入浅出畅谈华为云低时延直播技术的更多相关文章
- DTSE Tech Talk | 第10期:云会议带你入门音视频世界
摘要:本期直播主题是<云会议带你入门音视频世界>,华为云媒体服务产品部资深专家金云飞,与开发者们交流华为云会议在实时音视频行业中的集成应用,帮助开发者更好的理解华为云会议及其开放能力. 本 ...
- DTSE Tech Talk 第13期:Serverless凭什么被誉为未来云计算范式?
摘要:在未来,云上交付模式会逐步从Serverful为主转向Serverless为主. 本文分享自华为云社区<DTSE Tech Talk 第13期:Serverless凭什么被誉为未来云计算范 ...
- DTSE Tech Talk | 第9期:EiPaaS驱动企业数字化转型
摘要: 揭秘华为企业集成新模式. 本期直播详解 组装式概念解析 EiPaaS的核心技术能力 华为实践经验分享 EiPaaS未来的技术趋势 直播讲师:华为云PaaS DTSE布道师 傅翌伟 tips:E ...
- DTSE Tech Talk丨第3期:解密数据隔离方案,让SaaS应用开发更轻松
摘要:解读云上前沿技术,畅聊开发应用实践.专家团队授课,答疑解惑,助力开发者使用华为云开放能力进行应用构建.技术创新. 围绕当下许多企业青睐的SaaS应用开发,华为云DTSE技术布道师李良龙为大家带来 ...
- 《HelloGitHub月刊》第11期
<HelloGitHub>第11期 兴趣是最好的老师,<HelloGitHub>就是帮你找到兴趣! 简介 最开始我只是想把自己在浏览 GitHub 过程中,发现的有意思.高质量 ...
- 《HelloGitHub月刊》第 11 期
<HelloGitHub>第 11 期 兴趣是最好的老师,<HelloGitHub>就是帮你找到兴趣! 简介 最开始我只是想把自己在浏览 GitHub 过程中,发现的有意思.高 ...
- python 全栈开发,Day43(python全栈11期月考题)
python全栈11期月考题 1.常用字符串格式化有哪些?并说明他们的区别 2.请手写一个单例模式(面试题) 3.利用 python 打印前一天的本地时间,格式为‘2018-01-30’(面试题) 4 ...
- CCRD_TOC_2008年第11期
中信国健临床通讯 2008年第11期(总第24期) 目 录 脊柱关节炎 1. 一项多中心.大型.随机.双盲.对照试验证实依那西普治疗AS的疗效优于柳氮磺吡啶 Braun J, et al. ACR ...
- CCRD_TOC_2007年10月_总第11期
中信国健临床通讯 2007年10月, 总第11期 目 录 1. Etanercept可以缓解反应性和未分化关节炎患者的疼痛和滑膜炎症 Flagg SD, et al Arthritis Rheu ...
- 华为云PB级数据库GaussDB(for Redis)揭秘第八期:用高斯 Redis 进行计数
摘要:高斯Redis,计数的最佳选择! 一.背景 当我们打开手机刷微博时,就要开始和各种各样的计数器打交道了.我们注册一个帐号后,微博就会给我们记录一组数据:关注数.粉丝数.动态数-:我们刷帖时,关注 ...
随机推荐
- Macos下用Clion调试chromium源码
1:下载CLion 2021.1.3(网上有破解版) 2:选择File->Open 导入chromium源码 3:在Src同级目录新建一个CMakeLists.txt 4:点击clion编译按钮 ...
- Centos7.5镜像获取
Centos.7.5镜像可从以下地址获取 镜像源地址:https://mirrors.tuna.tsinghua.edu.cn/ 1.下拉找到cc目录下的centos-vault 2.点击进入下一级目 ...
- idea的git插件,可以显示每一行代码的git版本记录,很好用
再给大家推荐一款idea的git插件----GitToolBox,可以显示每一行代码的git版本记录,很好用 效果图如下 可以在光标所在行代码的后面显示git的版本记录信息(提交的用户名,提交的时间等 ...
- Vue 2.x源码学习:数据响应式改造
内容乃本人学习Vue2源码的一点笔记,若有错误还望指正. 源码版本: vue: 2.6 vue-loader: 13.x vue-template-compiler: 2.6 相关学习笔记: rend ...
- 手撕Vue-Router-知识储备
前言 本文是手写Vue-Router的第一篇,主要是对Vue-Router的知识储备,为后面的手写做准备. 那么 VueRouter 怎么实现呢?要想实现 VueRouter,首先要知道 VueRou ...
- go并发 - goroutine
概述 Go并发模型独树一帜,简洁.高效.Go语言最小执行单位称为协程(goroutine),运行时可以创建成千万上个协程,这在Java.C等线程模型中是不可想象的,并发模型是Go的招牌能力之一.很多文 ...
- Android学习day01【搭建Android Studio】
是Google开发的操作系统 Android开发是移动应用开发的表现形式之一 还有很多的开发形式,就不一一列举了 完整项目精简的开发流程 开发工具 Android studio(强烈建议) Andro ...
- 【LOJ NOI Round#2 Day1 T1】单枪匹马(矩阵乘法)
题目传送门 操作二要求的东西是一个循环迭代的东西,手推相邻两项找下规律,发现相邻两项的分子分母间含有线性关系,考虑用矩阵乘法求解.对于 \([1,n]\)的询问,从后往前倒推, \(x_{n-1}=a ...
- Eclipse 安装 ABAP 插件报错 Microsoft Visual C++ 2013 (x64) 快速解决
去官网下载Microsoft Visual C++ 2013 (x64) 安装 Download Visual C++ Redistributable Packages for Visual St ...
- 🎉开发者的福音:TinyVue 组件库文档大优化!类型更详细,描述更清晰!
你好,我是 Kagol. 前言 从今年2月份开源以来,有不少朋友给我们 TinyVue 组件库提了文档优化的建议,这些建议都非常中肯,我们也在持续对文档进行优化,并且从中总结出了大家对于文档优化的一些 ...