写点什么

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

  • 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:296902

评论

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

3000字13张图详细介绍RAID0、1、5、6、10、50、60,非常值得收藏!

wljslmz

raid 存储技术 三周年连更

数据库原理及MySQL应用 | 日志管理

TiAmo

数据库 MySQL数据库 日志管理 三周年连更

使用Python实现一个简单的垃圾邮件分类器

海拥(haiyong.site)

三周年连更

基于IM的企业移动应用平台,支持企业定制化

WorkPlus

【机器学习入门与实践】数据挖掘-二手车价格交易预测(含EDA探索、特征工程、特征优化、模型融合等)

汀丶人工智能

人工智能 数据挖掘 机器学习 深度学习 模型融合

Redis源码之SDS简单动态字符串

Java你猿哥

Java redis ssm Java工程师

cad看图:MiniCAD 中文版

真大的脸盆

Mac Mac 软件 cad cad看图

分享:作业帮在多云环境下的高可用双活架构优化实践

OceanBase 数据库

数据库 oceanbase

私有化视频会议系统, WorkPlus Meet助力企业 “面对面”安全开会!

WorkPlus

Kubernetes 中容器跨主机网络是怎么样的?

做梦都在改BUG

Java Kubernetes 云原生

SpringCloud 网关实现线程池异步批量保存请求日志

做梦都在改BUG

Java Spring Cloud 网关设计

面对向多模态发展的趋势,为什么这些业界和学界专家说“不必追热点”

小红书技术REDtech

深度学习 专家 活动回顾

一文解读基于PaddleSeg的钢筋长度超限监控方案

飞桨PaddlePaddle

人工智能 图像识别 飞桨

安全测试前置实践2-安全渗透测试

京东科技开发者

测试 安全测试 功能测试 网络安全渗透测试 企业号 4 月 PK 榜

分享:CUDB for OceanBase分布式数据库产品规模应用

OceanBase 数据库

数据库 oceanbase

数据解析NFT Q1市场表现:NFT生态正向Polygon聚拢,蓝筹项目"保值"难

NFT Research

数据分析 NFT

投放视频广告时,如何快速与第三方播放器兼容?

HarmonyOS SDK

HMS Core

京东技术专家首推:微服务架构深度解析,GitHub星标120K

Java你猿哥

数据库 架构 微服务 ssm Java微服务

跟随项曙明走进中兴通讯,探索企业开源风险治理优秀实践

开源雨林

开源治理 中兴通讯

AI与打工人:相互补充,共同进步 | 社区征文

海拥(haiyong.site)

三周年征文

聊聊简单又不简单的图上多跳过滤查询

华为云开发者联盟

大数据 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

阿里P8面试官让我吃透这份10W字Java面试题,终于拿下Java高级岗Offer

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

什么是接口定义? 接口定义的概念和用途详解

Apifox

前端 接口 后端 API 接口定义

ChatGPT背后的AI背景、技术门道和商业应用(万字长文,建议收藏)

京东科技开发者

人工智能 AI ChatGPT 人工智能ChatGPT 吗? 企业号 4 月 PK 榜

java性能优化实战:高并发系统的法宝之缓存设计

Java你猿哥

高并发 缓存并发 缓存设计 Java高并发 Java性能优化

横扫一线大厂面试的高并发笔记到底有多硬核?

小小怪下士

Java 程序员 后端 高并发 java面试

SpringCloud 网关实现线程池异步批量保存请求日志

Java你猿哥

spring Spring Cloud Java工程师 日志表

关于Blender你想了解的都在这里

Finovy Cloud

blender 3D软件

硬核!互联网资深大佬手码高并发编程速成笔记(2023版)限时开源

Java你猿哥

性能优化 系统架构 ssm 高并发 Java高并发

人工智能基础数据服务,第一!

百度开发者中心

人工智能 数据标注 元宇宙

技术不行还说Java卷!靠468页SpringBoot企业级项目实战成功逆袭

做梦都在改BUG

Java 微服务 Spring Boot 框架

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