干货 | 奇秀直播连麦技术探索

前言

2020上半年,直播再次成为中文互联网世界的新风口,甚至到了无达人不直播,无名人不带货的地步;从2016年直播元年开始,直播的内容越来越多元,从秀场直播,游戏直播,到短视频直播普济众生,再到电商直播的“带货”,“眼球经济”成长为互联网上的主流。本文介绍爱奇艺在奇秀直播的技术探索。

01

奇秀直播的两种直播场景简介

第一、普通直播:有一个主播和很多观众,该场景下主播一个人表演,其他观众通过平台IM系统跟主播进行文字互动,类似于单口相声;这种场景大部分使用RTMP协议,然后通过CDN的方式去做分发,从而实现大规模高并发的数据分发。

第二、连麦直播:该模式下主播跟观众除了基于IM系统沟通外,还可以进行和其他一个,或者多个主播实时音视频互动,普通观众可以同时观看多个主播的画面,效果直观,更能有效吸引用户,类似于对口相声和群口相声。

在连麦直播有很多有价值的业务场景,比如PK场景,此时每个主播头像上面会显示一个血条,当观众给某个主播送礼时,她的血条则会增长,结束时哪方观众送的礼物多就会胜利,失败了会被惩罚,这样一来,就能让观众更多地参与到直播的过程中,而且是通过送礼物。

02

直播场景使用的技术介绍

在技术上,普通主播一般是基于TCP的RTMP协议来推流的,而连麦直播一般是使用基于UDP的RTP协议来推流的。由于连麦直播是基于UDP的,还需要考虑应用层的丢包重传问题。在实现复杂度上,普通主播是相对较低的,而连麦直播实现复杂度相对较高。

对于连麦直播可以使用多种技术实现,比如对RTMP改进,传统的视频会议系统,WebRTC改进等。奇秀直播采用的woogeen,一种WebRTC改进实现的,对客户端SDK和后台MCU服务器进行重新设计,专门针对直播推流,直播连麦等应用场景,整体架构如下:

主要模块及功能:

第一、客户端SDK:主要包含信令功能和将WebRTC流推送到MCU;

第二、MCU节点:socketio信令接入,WebRTC流接入,音视频转码和混流,并负责把RTMP流推送出去;

第三、MCU_DNS:为用户提供最佳MCU节点。MCU_DNS负责节点管理,包括MCU单点负载收集,MCU申请调度, 黑名单机制, MCU集群上线/下线处理;

第四、MCU_API:提供业务操作API,比如HTTP信令接入,控制推流和混流等复杂操作,简化业务方的接入工作量;

第五、业务后台:负责推流所需的资源(例如,MCU房间号,RTMP地址)和收集MCU_API的反馈信息,控制整个直播和连麦的过程;

03

系统架构拓扑

这里介绍一下奇秀直播系统的拓扑结构,从上图可以看出,主播是把音视频流通过RTP推流到MCU服务器;在普通直播时,MCU服务器只需要把收到的音视频流转发到RTMP,当前切换到连麦直播场景时,MCU服务器会在不中断流的情况下进行合成,然后把合成流再转发到RTMP,连麦开始和结束画面实现平滑切换;

从观众端来看,都是使用HTTP-FLV/RTMP来进行拉流播放,且都是基于TCP的,并且普通和连麦场景切换时不会断流或卡顿;其次,每台MCU服务器都是一个独立的服务提供者,各台服务器可独立上线和升级,服务器之间无相互依赖,如服务器异常,只影响当前服务器,做到去中心化;

04

连麦问题和优化

一、WebRTC的优化

奇秀连麦基于WebRTC,但由于WebRTC一个针对面向通话的解决方案,所以需要对WebRTC进行调整和优化。

  • WebRTC采集的音频是8K或16K的,因为人在通话过程中信号的频率是不超过4KHz的,而直播主要是主播唱歌等一些音乐场景,所以必须要求是高采样率的,现在使用是48K的采样率。

  • 为了延时更低,WebRTC使用10~32Kbps的低码率音频编码,这样音质很差,而音视频直播里要用到64~320Kbps的高码率的音频编码,但还要考虑设备和网络情况,现在通过界面选择编码码率,默认128Kbps的音频编码;

  • 视频编码采用的是VP8和VP9,但VP8和VP9不适合在CDN上进行分发,现在使用的是H.264这种比较通用的视频编码;

  • 在传输方式上,WebRTC使用P2P方式来进行媒体中转,它只是解决端到端的问题,而对于连麦直播来说,并不仅仅解决主播端的音视频互通问题,还要把主播的数据推送到连麦服务器、CDN,且要保证到达我们的观众端,所以在连麦系统上是Relay的方式,很好处理推流和混流的问题。

二、连麦问题解决

另外和普通直播相比,连麦直播还需要重点解决下面几个问题:

1、混流问题:

在连麦直播里有两个或多个主播的音视频流,首先要解决的就是进行混流。对于混流的技术,可以选择在服务器合流、多流播放和在客户端合流播放等,奇秀连麦采用的服务器合流技术,可以减少下行网络带宽和播放设备的压力等;在服务器上有一个单独服务进程处理拉流、混流、和推流,它维护所有有关的信息,外部只需要通过API和它交互,避免了上层处理这些事务。

2、推流延时问题:

试想一下,如果连麦过程中主播说一句话,对方要等三四秒才能听到,连麦的体验就会非常差,而普通直播无这个要求,这个问题从以下几个个方面进行解决:

  • 开播前的网络优选。当主播在发起直播时会根据她所在地理位置,网络运营商以及服务器的负载等条件,然后从所有的节点里面选出一个比较好的节点和MCU服务器进行推流。

  • 是码率动态调整。在连麦直播里,必须保障音视频的实时性,另外不花屏、不卡顿,所以在传输的过程中,采用了码率自适应策略。由于主播的网络是非常复杂,所以采用根据网络情况动态调整码率的情况,并不是实时地随着网络去变化,而是有一个快降慢升的逻辑,如果码率上调太快,则会导致网络出现一个很不稳定的状态。快降慢升的方式就是当出现丢包的时候,马上下调码率,并且只有当保持了几秒以上的稳定状态后,才允许码率上调。码率动态调整使用了WebRTC的拥塞控制算法,共有两种:

      (1)、基于延迟(delay-based)的拥塞控制算法,由收端进行带宽估算,接收方需要每个数据包到达的时间和大小,并计算每个数据分组之间(inter-group)的延迟的变化,由此判断当前网络的拥塞情况,并最终输出码率估计值由RTCP feedback(TMMBR或 REMB)反馈给发送方;在估算时,利用卡尔曼滤波,对每一帧的发送时间和接收时间进行分析,修正估出的带宽。

      (2)、基于丢包(loss-based)的拥塞控制算法,发端带宽控制,发送方通过从接收方周期性发来的RTCP RR(Receiver Report)中获取丢包信息以及计算RTT,进行丢包统计,并结合TMMBR或REMB中携带的码率信息算得最终的码率值,来动态的增加或减少带宽,在减少带宽时使用TFRC算法来增加平滑度。然后由媒体引擎根据码率来配置编码器,从而实现码率的自适应调整。

  • 是性能优化。在直播过程中经常遇到设备发热的问题,设备发热会导致系统降频,以及对摄像头的采集掉帧严重。

    首先,美颜和特效的功能是可开关的,如果发现性能不行,可以选择不开;其次,特效在不同的机型都有不同的展示。再者,除了个别机型不能支持音视频硬编解外,实现了音视频的硬编硬解。

3、房间管理问题:

房间管理会涉及到一些业务层面的逻辑,比如说房间的状态、房间里有多少人、大小主播之间怎么沟通,这些都需要通过房间管理来做好的。为了保持独立,在服务器上有一个单独服务进程进行房间的管理,它维护了所有的的信息。另外为了同时支持普通和连麦直播,现在为每个主播端单独创建一个房间;当连麦时,会相互拉取对方房间的流进行合成,而不是加入同一个房间。

4、回声问题:

普通直播里面回声基本上不会存在,因为它是单向的,但是在连麦里面回声是必须要解决的。一般产生回声的原因是近端的声音被自己的麦克风采集后通过网络传到远端,而远端扬声器播放出来的声音被麦克风采集后通过网络又重新发回近端,使得近端通话者能够从扬声器中听到自己的刚才说的话,产生回声。

采取回音分端进行优化:

  • 在PC端,一般通过机架软件和兼容的声卡,配置不同的通道,比如伴奏,系统,麦克风,混响等,避免连麦声音被采集再次推流进行回音处理;

  • 在移动端,通过动态切换混音消除进行回音消除,连麦时开启回音消除,不连麦时不进行回音消除,提高声音质量。采用的是webRTC的混音消除算法(AEC,AECM),采用自适应滤波算法实现回声消除。该算法以输出到扬声器的音频数据为依据,根据现场的回声路径特征,模拟出回声信号。以模拟回声信号为依据,从麦克风采集到的音频数据中滤除模拟回声信号,使用的算法包括 a.回声时延估计 b.NLMS(归一化最小均方自适应算法) c.NLP(非线性滤波) d.CNG(舒适噪声产生等;

01

继续优化的方向

第一、是连麦服务器是允许实时切换,前文提到当主播在发起直播时,会根据她所在地理位置,网络运营商,以及服务器的负载等条件,然后从所有的节点里面选出一个比较好的节点进行主播推流网络的优选,但是如果在推流过程中发生问题,只能重新开播;如果这时主播在PK,会影响主播的榜单和成绩,所以在推流过程中发生问题可以实时切换服务器,是一个值得优化的方向。

第二,在移动开播过程中,如果发生网络切换时,在推流过程响应网络的实时切换是一个值得优化的方向。

第三,移动端现在回音消除通过webRTC的混音消除算法进行处理,但是处理后音质一般,需要进一步根据娱乐场景进行优化。

参考资料:

1. 《基于WebRTC的互动直播实践》

2. 《移动直播连麦技术实践》

3. 《WebRTC回声消除技术》

4. 《WebRTC的拥塞控制技术》

5. 《WebRTC权威指南》

也许你还想看

爱奇艺直播—春晚直播业务API架构
爱奇艺8K VR直播技术方案

扫一扫下方二维码,更多精彩内容陪伴你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/48737.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频直播时连麦功能使用说明

保利威视连麦系统 支持老师、助教、观众之间进行互动。音频支持4人互动、视频支持2人互动。 下面以老师和学生进行连麦时,各种状态下,老师端与学生端各自界面显示内容为例子进行讲解。 连麦功能位置 老师直播客户端,连麦功能的开启位置。…

直播连麦技术闭坑篇

直播音质如何改善 1、在使用 anyRTC SDK 进行直播的时候,SDK 默认是打开 AEC (回声消除)功能的,该功能对音质有一定的损耗,所以在开播之前建议先关闭该功能,当跟其他人建立起直播连麦后在打开该功能&#…

OBS直播如何连麦和多人连麦

OBS如何支持直播多人连麦和BGM?比如SRS 4.0的多人连麦、多平台直播、多场景切换的在线发布会方案如何实现的? 废话不多说,直接上干货。我录制了3分钟的视频教程,使用起来很简单,3分钟就讲清楚了: OBS-001-…

srs 直播连麦环境搭建

一、简介 二、修改conf/rtc.conf 三、两个客户端加入房间 四、合流 4.1分别拉流尝试 4.2合流推流 4.3拉取合流 一、简介 直播连麦是指在one2one或one2many进行音视频通话,此时把他们的音视频流合在一起,通过rtmp等协议推送给大量用户做直播。 因此首选需…

《算法新解》作者刘新宇:我只是想打开那些黑盒子,告诉人们里面有什么。

本文章仅用于学习和交流目的,不得用于商业转载。非商业转载请保留原作者、译者、原始链接地址:http://www.ituring.com.cn/article/274001 访谈嘉宾: 刘新宇,于1999年和2001年分别获得清华大学自动化系学士和硕士学位,之后长期从事软件研发工作。他关注基本算法和数据结构…

王峰五小时对话冯波:如果今天没有区块链,你会做什么?

“看完我们之间的对话,你会更能理解,原来做区块链才是Peter Thiel讲的从零到一。” 文 | 王峰 出品 | 火星财经APP(ID:hxcj24h) 有人问我,“王峰十问”和那么多业界精英做过对话,怎么不和冯波也…

2020 CES“高尖精”机器人回顾!

来源 | 机器人在线 原创 | 养乐多 2020 CES(国际消费类电子产品展览会)于美国时间1月7日到1月9日在美国拉斯维加斯会展中心盛大举行,2020年全新科技行业的趋势在这里开启。 拉斯维加斯会展中心展览面积为275万平方英尺(约25.5万…

小爱音箱 电脑 麦克风_开箱,小米小爱音箱万能遥控版,这样的操作你知道吗?...

小爱音箱万能遥控版采用白色的包装盒,正面是音箱的图片,支持QQ音乐库,海量优质有声内容,600家的使用技能,支持WiFi,蓝牙和红外,可以语音遥控家电。 包装盒的侧面,还印有小米小爱音箱万能遥控版的产品信息,产品型号为LX05A,采用蓝牙4.1,支持A2DP音乐播放,采用Micro …

小米小爱团队负责人王刚:语音交互背后,有多少人工就有多少智能

整理 | Just,阿司匹林 出品 | AI科技大本营(公众号ID:rgznai100) 【导语】近日,在英特尔与 O’Reilly 联合主办的中国人工智能大会上,小米的小爱团队负责人王刚分享了他们在语音交互技术上的进展以及面临…

挑战真实场景对话——小爱同学背后关键技术深度解析

本文来自 PaperWeekly 和 biendata 组织的企业 AI 技术实战讲座。作者为小米人工智能部的崔世起,崔老师以著名的“小爱同学”为实例,详细介绍了全双工关键技术及其应用。 本文主要分为四部分: 什么是全双工连续对话,针对全双工交互…

非小米手机接入小爱同学,Blinker智能家居

想实现小爱同学语音控制RGB灯 下载 1、米家 2、小爱同学 3、blinker点灯科技 米家同步设备 右上角添加,找到点灯科技 下面点击同步设备,就可以把blinker新建的设备同步过来啦 小爱同学指令训练 以此类推,添加其他的指令就可以了 然后就可…

chatgpt赋能python:用Python实现文本数字转换:从123到一二三

用Python实现文本数字转换:从123到一二三 在网站开发中,我们经常需要将数字转换成文字,比如将123转成“一百二十三”。这种数字转文字的需求,既方便了用户的阅读,也提高了网站的可读性和SEO效果。 在本文中&#xff…

元宇宙之NFT行业分析:中国数字藏品行业有望走向规范化、差异化

​潜力博主推荐,点上面关注博主↑↑↑ 一、中国数字藏品行业生态演进:合规化,差异化 (一)中办国办定调鼓励文化数字创新业务,行业形成自律规范 数字藏品作为新兴产业,在我国尚未搭建由上至下…

【历史上的今天】2 月 20 日:Python 代码首次发布;Facebook 收购 WhatsApp;DEC 创始人出生

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 2 月 20 日,在历史上的今天,吉多范罗苏姆正式对外公布 Python 代码,版本为 0.9.0。当前,Python 稳定版为 3.10.…

chatgpt赋能python:Python中数字转换的完整指南

Python中数字转换的完整指南 转换数字是Python编程过程中经常需要的操作之一。Python提供了许多内置函数和库,可以方便地将数字转换为各种格式和数据类型。在本文中,我们将介绍Python中数字转换的完整指南,包括各种转换方法和最佳实践。 内…

全新NFT合成功能

为了满足广大用户的需求,UTON NFR平台在今天(2月25日)10:00、14:00、20:00,分别发行了500份【滑雪】数字藏品、1000份【冰球】数字藏品和1000份【冰壶】数字藏品,所有藏品上线不到1分…

实现数字永生还有多久?元宇宙全息真人分身#8i

你们都有哪些元宇宙分身? # # 直播滤镜、数字人虚拟形象、真实人像3D重建...... 我觉得这些还不够元宇宙,8i 推出了元宇宙全息分身,支持真实人物全息重建,并可导入多平台通用。 小杜 何为元宇宙全息分身?简单来说&…

惊!没想到NFT图片合成如此简单。

一、制作背景 当前NFT作品制作的大多方式都是使用部件拼接的形式,然后从大量的可能性结果取优; 二、解决问题 拼接合成的组合数量十分巨大,手工合成费时费力; 合成中对各个部件的使用次数不容易控制,部位出现的概率对作…

PHP美团外卖开放平台开发记录,IM在线通讯token获取和消息解密!By勤勤学长

token获取: 一开始我还以为,监听哪个店铺的消息,就用哪个店铺的appAuthToken获取长链接的token,但实际上,不管是使用哪个店铺的appAuthToken返回的内容是一样的,同时也意味着,我们可以获取所有…

软信天成:ChatGPT爆火背后,数据治理与人工智能的相辅相成

近日,由人工智能研究实验室OpenAI研发的聊天机器人模型ChatGPT风靡全网。在OpenAI官网上,ChatGPT被描述为优化对话的语言模型,可以回答日常问题、进行多轮闲聊,也可以承认错误回复、挑战不正确的问题,甚至会拒绝不适当…