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

2023-11-01

目录


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或私有标准
协议 H.323、SIP、WebRTC,私有UDP RTMP、HTTP、HLS、DASH
分发 成熟的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里边。同时,在网络视频的监管方面,对智能化的鉴黄等也提出了新的需求。

作者介绍

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


转自https://mp.weixin.qq.com/s?__biz=MzI4MjE3MTcwNA==&mid=2664335359&idx=1&sn=015f84d1b04a0fe7aac0a1aa335bf4cf&chksm=f0a427a8c7d3aebe84c137c3505639b07af744a584c2a748547968aecf7b6abab47c07296371&mpshare=1&scene=1&srcid=0307oYA6FKl3ggrkmDTcyv0l&key=a9d7e7f2647cda56a635010ebb21e1a4bd085d68771b07f1b219dc7904a26236c2b4339399602d52f63ebd6602266d3f5d5a6ad627a68eb0268a324aaa2e8f8e30fae6f9552c4c6780c8f43e7c363428&ascene=0&uin=MTI3MDQ2MzIyMA%3D%3D&devicetype=iMac+MacBookPro11%2C1+OSX+OSX+10.11.6+build(15G31)&version=12020010&nettype=WIFI&fontScale=100&pass_ticket=Fqoq6SeOjpVlirXmMzS%2BBbO%2BupZlYhg176533ePY%2F3dIUIydyvekWO9mhLu3MqG3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

互动直播的技术细节和解决方案实践经验谈 的相关文章

  • 数字媒体资产管理教材

    http vr sdu edu cn lulin course DAM
  • Create a mosaic out of several input videos

    转自 https trac ffmpeg org wiki Create 20a 20mosaic 20out 20of 20several 20input 20videos Overview One of the great featur
  • 从用户家里采集IPTV码流

    具体的方法是通过在机顶盒和电视信号接口ONU之间增加一个镜像路由器 截取数据 再通过Wireshark软件或者自行开发的软件分析数据 WireShark抓取数据包 分析结果 机顶盒 机顶盒实质上是一个网页浏览器 每次开机之后会访问固定的网页
  • DTS Audio Codec 码率

    转自 https www zhihu com question 20816979
  • media sdk 性能优化

    https software intel com sites default files m 2 0 a 7 9 28439 Intel Media SDK E4 B9 8B E4 BC 98 E5 8C 96 E6 8A 80 E6 9C
  • 体育赛事直播系统的实践之路

    谓智慧运动场 就是一套利用互联网科技 软硬件集成 实现体育场地升级的解决方案 它可以运用在篮球等一系列球类运动场中 通过摄像头实时捕捉运动员的技术动作以及跑位影像 可以实现场内屏幕直播以及场外网络直播 为草根运动者搭建一个可以展示自己的舞台
  • 如何在H264数据中获取PTS

    H264的ES原始数据一般是以NAL Network Abstract Layer 的格式存在 可以直接用于文件存储和网络传输 每一个NALU Network Abstract Layer Unit 数据 是由数据头 RBSP数据组成 首先
  • 基于flowplayer的视频缩略图的视频预览

    大家在平时观看视频的视频网站中 比如优酷 爱奇艺 腾讯视频等 鼠标移动至播放条区域的时候 大家可以看到会弹出小的视频预览图片 这样子就可以给用户很好体验 至少可以知道前后播放的内容 最近公司业务需要 就不得不研究了 本文将从三个方面进行总结
  • 互动直播的技术细节和解决方案实践经验谈

    目录 1 互动直播背景 2 连麦流程 功能与技术指标 2 1 连麦的业务流程 2 2 互动直播的功能 2 3 技术指标 2 4 应用领域 3 主流的技术方案 3 1 互动直播技术领域 3 2 主流的技术方案 3 2 1 基于RTMP技术的连
  • GPU比较(1285Lv4&1245v5)

    1285Lv4 Intel Iris Pro Graphics P6300 Iris Graphics 6200 P6300 EU 48 核心代号 GT3e 1245v5 HD Graphics P530 EU 48 核心代号 GT3e
  • ffprobe获取视频帧信息中的pkt_pts、pkt_pts_time

    遇到个客户反馈多码率帧没同步 想用ffprobe看下不同码率的I帧的pts是否一致 发现ffprobe可以出pkt pts pkt pts time两个时间戳 查了下资料 自己也验证了下 结论如下 pkt pts 帧的pts数值 pkt p
  • MP4中同时有逐行、隔行编码视频内容

    公司做了个MP4视频 一部分是逐行的 一个部门是隔行扫描方式 用mediainfo看了下 整个显示视频信息为 Scan Type Interlaced Scan Order TFF 用Stream Eye观看视频 隔行部分如下图 逐行部分
  • 媒资知识图谱系统

    http wenku baidu com link url xEjnrOeeVaqCc5JNZfuFGewAFKWbPjZDI3FzopmFuDrxYIfXkU3fxaXnPDpI2 6 kvcbnwV 8irUddAmk2JpkZlD2B
  • https://github.com/gfto/mptsd

    https github com gfto mptsd Tvheadend is a TV streaming server and digital video recorder It supports the following inpu
  • ffmpeg在接收UDP网络协议流时在链接上通过fifo_size进行缓冲大小的设置

    If you original URL looks like this udp 239 1 1 7 5107 Add the fifo size and overrun parameters like this udp 239 1 1 7
  • H.264的Slice及Slice类型

    一 基本概念 一个视频图像可编码成一个或更多个条带 每个条带包含整数个宏块 MB 即每个条带至少一个MB 最多时每个条带包含整个图像的宏块 总之 一幅图像中每个条带的宏块数不一定固定 设条带的目的是为了限制误码的扩散和传输 应使编码条带相互
  • 基于web的在线视频编辑的设计

    基于web的在线视频编辑的设计 我在这里首先说明一下 本设计只涉及到逻辑设计和关键的技术 具体的实现方法 语言就得运用自己的特长去解决了 场景 1 比如我用手机录播一段很长的MP4格式的视频 我想剪切其中的几段 然后在合并成一个新的视频 如
  • IVTC/Deinterlace的来龙去脉

    IVTC Deinterlace的来龙去脉 1 胶片电影 曝光率为24帧 秒的progressive video 连续完整帧图像序列 它由无数个感光晶体 35mm可达5000 5000 实现图像曝光 而人眼在35mm的区域内能分辨的最大极限
  • 液晶电视的MEMC(运动画质补偿技术)的优势不足

    MEMC Motion Estimate and Motion Compensation 即运动估计和运动补偿 液晶电视中用到的运动画质补偿技术 其原理是采用动态映像系统 在传统的两帧图像之间加插一帧运动补偿帧 将普通平板电视的50 60H
  • ffmpeg已支持解码avs2.0

    https ffmpeg org pipermail ffmpeg devel 2016 November 202446 html PS 目前应该还是个提交的patch 待审核

随机推荐

  • 如何计算当前进程的CPU占用率

    由于测试一个解码器的项目 很长时间都在反复进行domain knowledge的学习 再加上自己是一个测试新手 对于测试代码撰写啥的还很是生嫩 前一阵被要求在性能测试中 最好在测试时能够计算出解码进程的CPU占用率 做为我们参考的一种性能参
  • w10 没有internet信息服务器,win10找不到“internet信息服务(IIS)管理器”怎么办...

    用户在搭建开发环境的时候 找了很久没发现 internet信息服务 IIS 管理器 那么 internet信息服务 IIS 管理器 去哪里了 如果你在win10找不到 internet信息服务 IIS 管理器 不要着急 在这里跟大家分享下具
  • shell脚本基础知识-shell中的特殊符号

    1 代表零个或多个字符或数字 test后面可以没有任何字符 也可以有多个字符 总之有或没有都能匹配出来 2 只代表一个任意的字符 不管是数字还是字母 只要是一个都能匹配出来 3 这个符号在linux中表示注释说明的意思 即 后面的内容lin
  • pip安装更换镜像

    原文链接 使用pip来安装python包有时候安装起来会非常慢 因此需要换成国内的源来加速下载 1 使用命令 以Torch为例 pip install i https pypi tuna tsinghua edu cn simple tor
  • DNS 解析顺序是怎样的?

    1 DNS 解析过程 当客户端对域名发起访问时 会将解析请求发送给递归解析服务器 递归服务器会代替客户端进行全球递归查询 首先递归服务器会请求根域名服务器 根域名服务器根据域名后缀 告知对应的顶级域名服务器 递归服务器再向顶级服务器发起请求
  • Silence - 专注于阅读的博客园主题

    最近花了点心思整理了下我的博客园主题代码 今天正式和大家分享一下 感兴趣的园友可以了解一下 主题介绍 Silence 追求大道至简的终极真理 旨在打造一个干净 专注阅读的博客主题 没有二维空间元素 不存在花里胡哨 简单概括其几个主要特点 专
  • Java面向对象编程

    在 OSI 分层模型中 把传输的比特流划分为帧 是哪一层的功能 A 物理层 B 网络层 C 数据链路层 D 传输层 答案 C 下面关于源端口地址和目标端口地址的描述中 正确的是 A 在TCP UDP传输段中 源端口地址和目的端口地址是不能相
  • Activity启动流程源码分析-浅析生命周期函数

    源码分析 接着上一篇 Activity启动流程源码分析 setContentView源码阅读 的讲解 本节介绍一下Activity的生命周期函数何时被调用 要看Activity的生命周期函数何时被调用 不得不翻阅 ActivityThrea
  • c++中string转UNIX时间戳

    最近的业务 需要用到string转UNIX时间戳 记录一下实现过程 c 代码如下 include
  • Pandas学习笔记

    Pandas学习笔记 1 Pandas介绍 1 1 认识Pandas 1 2 案例 2 Pandas 数据结构 2 1 Series 2 2 DataFram 3 Pandas的基本数据操作 3 1 索引操作 3 2 赋值 3 3 排序 4
  • 各种图论模型及其解答

    原文转自Jelline blog http blog chinaunix net uid 9112803 id 411340 html 本文用另一种思路重新组织 图论及其应用 相关知识 首先 用通俗化语言阐述了如何对事物间联系的问题进行图论
  • C++学习之空间配置器--------(二级空间配置器)

    二级空间配置器 出现的原因 二级空间配置器的原理 二级空间配置器的底层代码解析 出现的原因 原因 由于我们申请的空间有时会太小 而频繁的去申请这样的小空间就会造成太多小额区块造成的内存碎片 对于这些小额区块所带来的不仅仅是内存碎片 更是配置
  • python每日一练-合并两个有序的链表(超详细讲解)

    先来看题 首先对于链表我也是首次接触 所以自己取学习了一下关于链表的知识 首先我们先来看题目 因为本题目需要使用到递归的方法 所以我们首先先来介绍一下什么是递归 递归又是怎么用的 函数在运行时调用自己 这个函数就是递归函数 调用的过程就叫做
  • go之官方依赖管理工具dep安装和使用

    前言 大家都知道go没有一个自己的包管理平台 社区里go的第三方包托管在各个git托管平台 需要用到包时通过go get 命令工具安装 但这个工具没有版本描述性文件 在go的世界里没有 package json 这种文件 这个给我们带来直接
  • Conda executable is not found

    1 问题 当我安装PyTorch之后在pycharm中配置pytorch的时候出现了如图中的样子 2 解决方式 2 1点击文件夹图标 2 2 因为是Conda executable 所以我们要选择Conda exe不能选择Python解释器
  • 关于eclipse的项目前有感叹号和errors exist in required project相关问题

    一般来说 项目运行中 各个类的信息中并没有报错 但在运行中会出现errors exist in required project 且有时候运行也会成功 这种情况是由于项目中其他的类存在问题未解决 导致影响到项目整体运行 另一种情况是类并未有
  • 牛客网-做题笔记

    网易有道2017内推选择题 XML数据结构有且只有一个根节点 可以嵌套 XML解析分为三种 SAX解析 PULL解析和DOM解析 求循环队列元素个数 rear front Max Max 非循环队列 元素个数为 rear front 1 程
  • 微服务链路追踪zipkin

    微服务链路追踪sleuth zipkin 一 安装zipkin 二 sleuth概念解析 1 trace 2 span 3 annotation 4 采样率 三 zipkin流程图 1 zipkin流程图 2 追踪流程 四 注意事项以及配置
  • Log4J2在Web工程下日志无法写入文件的问题

    接触Log4J不久 之前在Java工程测试学习的 一切正常 前几天在做一个JSP的案子 Web工程下 同样的配置文件 却写不到文件 在控制台日志正常输出 Web工程下 在Java类main方法中测试 也可以正常写入文件 控制台也是正常 经过
  • 互动直播的技术细节和解决方案实践经验谈

    目录 1 互动直播背景 2 连麦流程 功能与技术指标 2 1 连麦的业务流程 2 2 互动直播的功能 2 3 技术指标 2 4 应用领域 3 主流的技术方案 3 1 互动直播技术领域 3 2 主流的技术方案 3 2 1 基于RTMP技术的连