HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

百度云互动直播的技术细节和解决方案实践经验谈

  • 2017-03-12
  • 本文字数:4109 字

    阅读完需:约 13 分钟

目录

  1. 互动直播背景
  2. 连麦流程、功能与技术指标
    2.1. 连麦的业务流程
    2.2. 互动直播的功能
    2.3. 技术指标
    2.4. 应用领域
  3. 主流的技术方案
    3.1. 互动直播技术领域
    3.2. 主流的技术方案
    3.2.1. 基于 RTMP 技术的连麦
    3.2.2. 基于 WebRTC P2P 方式的连麦
    3.2.3. 基于低延时网络的连麦
  4. 百度云互动直播解决方案
    4.1. 整体解决方案
    4.2. 基于 RTMP 协议的连麦
    4.3. 基于 UDP 私有协议的解决方案
  5. 技术发展趋势

互动直播背景

2016 年被称为“直播元年”,目前早就进入了直播战国时代,移动直播 App 多达数百家,庞大的移动用户规模已经形成。网络直播作为新兴的社交方式已引发新一轮媒介革命,迅速成为新媒体营销的新阵地。

如何在直播竞争中取得领先优势,成为各个平台寻求差异化的动力,“互动直播”成为了直播发展的趋势。通过视频连麦,用户之间可以进行视频互动,达到更深层次的超越语言文字的交流。

互动直播与单向直播不同,赋予了普通观众“露脸发声”的权利,低延时的网络,主播可以实现与连麦观众的双向互动,在直播房间里的其他观众也可以观看主播和连麦观众互动的过程。在互动的时候还可以加上道具、美颜等滤镜,与陌生人进行视频互动聊天,是社交的下一个场景。如果一个观众喜欢该直播,他可以通过发送公开问题、赠送一个或多个虚拟礼物来引起主播的注意,寻求与主播进行视频连麦的机会。

连麦流程、功能与技术指标

连麦的业务流程

连麦的业务流程描述如下:

  1. 主播正常开始直播,普通观众看到主播的单人直播画面;
  2. 需要连麦的观众发起连麦请求,进入连麦申请列表;
  3. 主播从连麦申请列表中选择一名或多名观众进行连麦操作,主播与连麦观众进行实时音视频互动,同时互动直播后台生成“合成画面”(混流画面);
  4. 普通观众看到直播画面为包含主播与连麦观众的“合成画面”;
  5. 连麦结束,恢复主播单人直播模式。

在业务模式上,主要有两种连麦需求,一种是主播主动邀请观众上麦,另外一种是观众申请连麦,业务流程如下图所示:

互动直播的功能

低延时音视频通信是互动直播的核心技术能力,另外包括终端上面的视频处理能力,如降噪、美白,声音处理能力;音频降噪、回声消除等等的能力。

同时,系统支持更大规模观众数的直播服务,可以将主播和多个连麦用户的画面,经过音视频混流后,推送到 CDN 进行分发,称之为“旁路直播”。我们将位于 RTC 低延时网络里边的用户称为“高级观众”,而将收看 CDN 混流画面的观众称之为“旁路观众”。通过旁路直播,可以支持数千万的观众并发的场景。

总结起来,互动直播包含以下三个重要特征:

  • 互动房间里的每个人都有上麦和下麦的权利
  • 端到端演示小于 500ms
  • 互动房间的容量可以达到万人以上

技术指标

参数类型

百度互动直播指标描述

音频采样率

8K,16K,48K

进入房间速度

WIFI:960ms 4G:1504ms

视频码率范围

30~1500kbps

视频分辨率

CIF 到 720P

最多同时音视频

7 路

抗丢包率

35%

延迟范围

150~400ms

同房间并发观众数目

10 万人以上

应用领域

直播秀场、视频社交、互动课堂、远程医疗、 企业年会、股评分析、 电商宣传等领域。

主流的技术方案

互动直播技术领域

互动直播与单向直播虽然都是“直播”,都属于音视频技术领域,但在行业发展上却有着很大的不同。互动是双向的,在专业上属于视频通信技术领域,而目前传统的直播属于流媒体传输技术领域。是不是从现有的成熟的 CDN 技术,可以很快做出一套完整的互动直播方案呢?答案是否定的。

我们可以通过下面看一下两个领域的区别:

项目

单向直播 LIVE

互动直播 RTC

方向

单向,一对多,广播型

双向,一对一或一对多互动

延时

3-5s 或更多

< 300ms

编码

标准 CODEC,如 H.264

标准 CODEC 或私有标准

协议

RTMP、HTTP、HLS、DASH

H.323、SIP、WebRTC,私有 UDP

分发

成熟的 CDN 技术和服务商

RTC-CDN 仍在构建中

主流的技术方案

在技术方案上,基本上有下面几种可以实现的方案:基于 RTMP 和 CDN 技术的连麦、基于 WebRTC(P2P)与旁路直播的连麦、基于低延时网络的连麦。

基于 RTMP 技术的连麦

当有连麦者时,则主播端和连麦端,都分别推一路 RTMP 流到 CDN,CDN 再将这两路 RTMP 流发送给观众端,观众端将两路 RTMP 流合成为一个画面。

这个方案的优点是实现简单,协议与 CDN 架构兼容,对客户来说在现有单向直播架构上,接入成本比较低,但是缺点也是很明显的:

  • 主播与连麦者如果要进行交互,考虑到上面分析的延时问题,因为 RTMP 协议是基于 TCP 协议传输的,在 CDN 中传输延时较大。
  • 主播与连麦者交互时,声音会产生干扰,形成回音
  • 观众端要接收两条视频流,带宽、流量消耗过大,并且两路视频流解码播放,耗费 CPU 等资源也非常多。

基于 WebRTC P2P 方式的连麦

WebRTC 是 Google 公司的开源技术,降低了音视频通信的接入门槛,也有公司采用该项技术实现连麦。主播与连麦用户采用 P2P 方式进行交互,然后在主播端进行混流,然后在 CDN 上进行混流,发送到观众端。

该套方案的优缺点如下所述:

  • P2P 在某些网络下无法穿透,有些观众根本无法与主播端进行交互。
  • 主播端需要上传两路视频:一路 P2P 与连麦者进行交互,一路使用 RTMP 推到 CDN。还要下载一路视频:连麦者 P2P 发送过来的交互数据。所以主播端要求带宽需要较高,网络较差时无法进行主播。
  • 主播端要进行多路视频的编码、解码,要求主播端设备配置比较高,较差的设备也无法进行主播。
  • 只能支持一个连麦者,不能支持多个连麦者。
  • 由于主播端和连麦者经过 CDN 合并成一路,因此,不能实现主播端和连麦者视频大小窗口切换。

基于低延时网络的连麦

基于私有 UDP 协议的传输与 RTMP 相比具有先天的优势,但如果采用该方案也需要解决一系列的技术问题如:

  • UDP 的可靠性传输如丢包重传、网络抖动的处理
  • 网路拥塞的控制算法
  • 在全球节点的部署与智能调度
  • 各种端的全面支持

以上都是在短期内很难实现的。

而百度云在多年 CDN 技术的基础上,通过对私有 UDP 协议,实现了用户视频通信的实时传输网络 RTN。

百度云互动直播解决方案

整体解决方案

基于客户和市场的需求,百度云推出两套不同的互动直播解决方案:

  • 基于 RTMP 协议与 CDN 的连麦技术方案
  • 基于 UDP 私有协议和实时分发网络 RTN 的连麦解决方案

两套方案互为补充,以满足不同客户的需求。

如前所述,如果用户在单向直播方面已经有了大量的用户,且技术架构确定,可以采用 RTMP 协议的解决方案,减低接入成本。采用 RTMP 方案的传输。

在并发规模不是巨大,或者对延时有着超低需求的场合,如视频会议、视频社交等场合,我们推荐使用基于 RTN 网络的全低延时解决方案。

下面就这两套解决方案做一个介绍。

基于 RTMP 协议的连麦

(点击放大图像)

RTMP 协议是基于 TCP 传输的协议,为了达到低延时的传输,我们采用多方面的技术手段进行优化。

网络延时是指从主播端采集,到观众端播放之间的时间差。引入延时的环节包括: 编码延时、传输延时、解码延时等。传统 CDN 的分发都是为了一般采用 RTMP 协议,如果一旦出现网络的抖动、丢包,因为可靠性传输的原因,就会引入较大的传输延时。

基于百度云覆盖全国的 IDC 核心网络,部署基于 RTMP 协议加速分发节点,专门用作连麦用户和主播的媒体传输通道,而不连麦的观众,仍然走传统的分发路径,来应对 RTMP 高并发用户的观看。

在终端支持方面,将传统直播的推流 SDK 和播放 SDK 进行合并,并且加入独有的回声消除(AEC)引擎,来解决连麦双反可能出现的回声问题。针对连麦场合,减少 RTMP 播放器的缓冲器,保证播放器引入较低的延时。

在混流方面,采用服务端混流的解决方案,与端上混流的方案相比,计算能力和分发能力较强,同时降低了主播端的带宽压力,提高流程性。

基于 UDP 私有协议的解决方案

与 RTMP 协议的连麦方案不同,主播和高级观众的连麦是在基于 UDP 协议的实时传输 RTN 上实现的。

首先说一下低延时 RTN 网络与 CDN 网络的不同。CDN 是存储转发结构,设计目的是在各个边缘节点缓存待分发内容,结构上从源站到观众是伞状多级缓存放大方式。RTN 网络本质上是一个实时传输网络,用户的数据在网络单元内部和传输线路上都以实时交换方式传送,从而能够保证最低延迟。底层协议不同。

RTN 采用了专为实时传输设计的 UDP 协议,避免了采用 TCP 的延时不可控缺点。能够大大缩短交互延时,延时可从 CDN 方案的数秒,降低到数百毫秒。基于自定义路由,选择最优传输路径,直接将内容端到端传输,数据在网络单元中从不缓存,从而最大可能地降低延迟,同时内容安全性也更好。CDN 是将内容缓存于缓存服务器中,再将内容就近下发。

在使用场景方面,SD-RTN 适用于要求极低时延的实时互动场景,例如网络电话、视频会议、有主播与观众交互需求的互动直播等。CDN 适用于对时延要求不高的场景,例如对延时要求不高、类似电视的单点直播、网站加速等。若硬要将 CDN 改造用于互动直播,那么其结构上对降低延迟的不适应性,始终会成为质量改进需求的瓶颈。

在网络传输性能指标方面,可以达到 30% 的抗丢包的传输。

客户端通过 RTN 的就近接入策略,让使用者就近接入质量最好的数据节点,通过百度云的智能调度策略优化路由,经过传输延迟和质量优化的最优路径,自动避免网络拥塞,并规避骨干网络故障的影响。

主要的技术特点如下:

  • 可以支持更多的主播交互,目前支持 7 人视频交互,万人并发语音交互

  • 当有观众连麦时,其他观众端收到的多路视频,观众端可以动态选择布局

  • 服务端混流服务器推送到 CDN,其他观众(网页端等)可以直接观看

  • 在经过 RTMP 推流前的观众端,可以进行大小流切换,自主选择视频大小窗口的切换 (点击放大图像)

通过 RTN 实时网络与基于百度 CDN 技术相结合,百度云推出了互动的直播的完全解决方案,其技术架构如上图所示。

通过百度云的信令系统,用户无论选择哪种技术方案,都可以快速的接入一整套的互动直播解决方案。

技术发展趋势

随着移动互联网技术的进步,直播技术正在朝着移动化、互动化和智能化的方向发展。实时通信能力,也将成为一种移动互联应用的基础能力,从而嵌入到几乎所有的 APP 里边。同时,在网络视频的监管方面,对智能化的鉴黄等也提出了新的需求。

作者介绍

邢怀飞,百度高级研发工程师,负责百度云媒体云互动直播方向的技术研发。


感谢孟夕对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-03-12 17:296844

评论

发布
暂无评论
发现更多内容

2021牛转乾坤:新花样玩转Android组件化架构实践,15K-50K的详细Android学习指南

android 程序员 移动开发

Activity-的-36-大难点,你会几个?,android游戏开发实践指南

android 程序员 移动开发

知识中台与区块链助力多源可信数据价值释放

CECBC

大势已来!!区块链的真正价值是什么

CECBC

2020面试题合集之吊打面试官系列(一),kotlin数组性能

android 程序员 移动开发

2021 Android 大厂面试(五)插件化,androidframework开发书籍

android 程序员 移动开发

Anaconda详细安装及使用教程,阿里P8大牛亲自教你

android 程序员 移动开发

2021京东 Android 岗 Java 面试真题解析,android平台架构的四个层次

android 程序员 移动开发

GitLab和Rainbond整合实现一体化开发环境

北京好雨科技有限公司

DevOps gitlab #GitLab gitlab hook rainbond

ajax分析 学习(1),android0基础

android 程序员 移动开发

ajax分析 学习,kotlin构造器

android 程序员 移动开发

Andoird中LiveEventBus的使用——用LiveEventBus替代RxBus

android 程序员 移动开发

Androdid Droid Fu介绍(1),万字Android技术类校招面试题汇总

android 程序员 移动开发

2021Android面经,历时一个半月,斩获3个大厂offer,阿里P8大佬整理

android 程序员 移动开发

Activity的任务栈Task以及启动模式与Intent的Flag详解(经典博文,值得收藏

android 程序员 移动开发

分布式服务下,消息中间件改造

kafka 架构 RocketMQ RabbitMQ 中间件

2020这一年的Android面经汇总(百度、腾讯、滴滴,查漏补缺

android 程序员 移动开发

2021年尾 Android 面试之必问高级知识点(包含答案),kotlin语法大全

android 程序员 移动开发

Andorid&Kotlin编译速度原理剖析(上),lambda表达式的作用与好处

android 程序员 移动开发

A010-menu资源,看完老板哭着让我留下来

android 程序员 移动开发

Activity的生命周期,这可能是目前最全的

android 程序员 移动开发

巧用 Redis 数据结构实现亿级数据聚合统计

码哥字节

redis 数据统计 NoSQL 数据库 11月日更

想要实现元宇宙,需要哪些技术支撑?

行云创新

技术 云原生 vr 云宇宙 虚拟

Android - 在线浏览源码,电话短信相关,文本变化监听器

android 程序员 移动开发

2021疫情下Android技术人的宅家学习进阶指南!花了大价钱大厂内部买来的学习资料,爱看不看

android 程序员 移动开发

Andriod 网络框架 OkHttp 源码解析,总结一下

android 程序员 移动开发

2021新鲜面经,蚂蚁内部转岗Android面试分享,深夜思考

android 程序员 移动开发

面试阿里P6,过关斩将直通2面,结果3面找了个架构师来吊打我?

Java spring 程序员 架构

Androdid Droid Fu介绍,flutter底部弹窗

android 程序员 移动开发

2020阿里巴巴,字节跳动,京东,android驱动开发环境搭建

android 程序员 移动开发

1.1 黑客与社会工程学

sec01张云龙

11月日更

百度云互动直播的技术细节和解决方案实践经验谈_百度_邢怀飞_InfoQ精选文章